[quote=entanglement]Minha recomendação - desista.
Conexão a bancos de dados via Web sempre darão problemas. Se não é no cliente (que tem um proxy que só deixa sair o protocolo http e https, não outros protocolos) é no servidor (que estará hospedado em algum lugar que não deixará abertas as portas onde normalmente os bancos de dados atendem, por motivos de segurança.).
Não dou alguns minutos para que um banco de dados hospedado na Internet seja atacado.
(Alguns provedores deixam bancos disponíveis, mas eles têm pessoas que sabem fazer isso, e sabem controlar todos os acessos para que não haja acessos indevidos, o que provavelmente não é nem de longe o seu caso, já que você é estagiário e ainda está aprendendo.).
O correto é criar algo como um web service, e deixar apenas o web container visível na Internet. O servidor do banco de dados deve ficar na rede interna. [/quote]
Nunca havia visto sobre o web service.
Para teste resolvi criar uma aplicação de demonstração, seguindo esse tutorial:
O meu web service ficou assim:
[code]
@WebService(serviceName = “Teste”)
public class Teste {
@WebMethod(operationName = "getNome")
public String getNome(@WebParam(name = "ID") String ID) {
String retorno;
try {
Connection con;
String url = "jdbc:postgresql://192.168.0.1:5432/Teste";
String usuario = "admin";
String senha = "senha123";
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(url, usuario, senha);
String cmd = String.format("SELECT Nome "
+ "FROM public.Funcionarios "
+ "WHERE ID = '%s'", ID);
ResultSet rs;
Statement st;
st = con.createStatement();
rs = st.executeQuery(cmd);
rs.next();
retorno = rs.getString(1);
} catch (SQLException e) {
retorno = e.toString();
} catch (ClassNotFoundException e) {
retorno = e.toString()+"1";
}
return retorno;
}
}[/code]
O cliente do web service ficou assim:
[code]public class Demo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String id = scan.nextLine();
services.Teste_Service service = new services.Teste_Service();
services.Teste port = service.getTestePort();
java.lang.String resultado = port.getNome(id);
System.out.println("Result = " + resultado);
}
}[/code]
No meu computador funcionou normalmente, mas em outro computador não vai funcionar, porque a URL de busca pelo web service (que está “hospedado” no Glass Fish, rodando no meu computador), gerada pelo Netbeans, aponta para http://localhost.
Caí no mesmo problema, com um personagem diferente.
Agora minha dúvida é:
Como acessar um web service que seja externo a rede?
Como fazer para que qualquer computador tenha acesso ao web service, pela internet?
O que quero fazer é “dizer” ao Glass Fish: Olha, tá vendo esse web service aqui? Não quero que o acesso a ele fique restrito ao usuário do próprio computador em que ele está hospedado. Quero que qualquer pessoa tenha acesso a ele, através da internet, digitando o endereço xxx.xxx.xxx.xxx.
Como posso fazer isso?