Olá pessoal, o sistema que desenvolvo se deparou com outro cenário, e não sei como configurar o cliente desktop (swing) para se conectar no banco remoto MyQSL via Proxy. (com e sem autenticação de usuário)
Ele mostra a mensagem de erro:
[code]
2010-05-24T10:32:59.902-0300 SEVERE null
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2260)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:787)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)[/code]
Eu encontrei alguma coisa neste link, mas não estou sabendo como aplicar (e nem se esta saída é aplicada confirme a minha necessidade - Eu creio que não)
Bem, a minha conexão está OK, pois o sistema já roda normalmente em outros clientes.… O problema é que agora temos um novo cliente que usa servidores Proxy para barrar a internet nas máquinas da empresa, e então nosso programa desktop (com conexão do banco na web) não consegue ser executado…
Mas, de qualquer forma, a minha conexão segue o padrão:
Li também que a máquina virtual Java pega a configuração do navegador, e não é necessária nenhuma mudança na aplicação… Eu não consegui isso, pois até mesmo fui nas configuracões da MVJ, alterei colocando os valores do Proxy, e tb não tive nenhum resultado positivo…
A conexão com a internet funciona normalmente alterando as configurações do meu navegador (estou usando o IE pq ele altera as configurações globais do Windows, assim a MVJ pega as configurações por padrão)…
Estou totalmente perdido, pois não sei o que devo fazer para conectar a minha aplicação na internet…
O pior é que o próprio Proxy bloqueia, por segurança, as páginas com a palavra “Proxy”, ou seja, é impossível eu buscar a solução do problema diretamente no clientes…
A cada implementação de teste, eu tenho que sair da empresa, e ir até o cliente testar, e depois voltar… :evil:
Estou dando uma vasculhada aqui na web. Vi alguns posts que voce pode configurar diretamente o Windows, mas o seu proxy tem que aceitar conexão do mysql. Vi também que existem ferramentas para ajudar nesta configuração.
Vou continuar procurando, qualquer novidade eu posto.
Estou com mesmo problema aqui , mas com conexão com o Banco Oracle. tentei setar o proxy para falso já que minha conexão com o banco não passa pelo proxy ( meu Banco de dados esta na rede interna), da seguinte forma:
System.getProperties().put(“proxySet”, “false”);
mas também não funcionou.
No seu caso, se seu banco Mysql esta por trás do proxy, você tem que liberar no proxy a conexão. não adianta fazer unicamente no JAVA. no meu caso ainda não sei…
[quote=marujo]Estou com mesmo problema aqui , mas com conexão com o Banco Oracle. tentei setar o proxy para falso já que minha conexão com o banco não passa pelo proxy ( meu Banco de dados esta na rede interna), da seguinte forma:
System.getProperties().put(“proxySet”, “false”);
mas também não funcionou.
No seu caso, se seu banco Mysql esta por trás do proxy, você tem que liberar no proxy a conexão. não adianta fazer unicamente no JAVA. no meu caso ainda não sei…
[/quote]
Bem Marujo, eu não entendi se o seu banco está em uma rede com proxy ou não, pois vc inicia falando que não, mas depois fala que ele está na rede interna…
Se o seu cliente estiver usando algum proxy para se conectar (que é o meu caso), ele tem que colocar aqueles parâmetros (ver n1) ao iniciar o sistema, ou então colocar os códigos diretamente no sistema.
Agora, se caso for o banco de dados que estiver dentro de uma rede com proxy, vc tem que liberar as respectivas portas no proxy, assim como rotear a porta caso tenha algum roteador.
n1:
Sem login:
java -DproxyHost=10.0.0.10 -DproxyPort=3128 -DproxySet=true -jar "C:\caminho.jar"
Com login:
java -DproxyHost=10.0.0.10 -DproxyPort=3128 -DproxySet=true -DproxyUser=USUARIO -DproxyPassword=SENHA -jar "C:\caminho.jar"
Deixa eu explicar melhor.
Na rede onde o sistema JAVA está instalado, os computadores utilizam proxy para acesso a internet( WWW,FTP,etc) por conta de um firewall LINUX com SQUID
O sistema desenvolvido em JAVA não precisa de acesso a internet, somente acesso ao banco de dados (ORACLE), porém por causa da configuração do proxy do PC o Java não consegue acesso ao banco de dados, por que?
Porque ele tenta acesso ao banco via proxy. apesar do banco de dados não esta por trás do proxy(SQUID). o banco de dados esta na rede. Assim, para que o JAVA utilize o banco de dados é preciso remover a configuração de proxy das máquina. O problema com está solução é que os usuários ficam sem acesso a internet! o que não da!
Felizmente consegui achar a solução. basta colocar o seguinte no main do sistema:
com isto desativa-se a utilização de proxy no Java, é claro que para mim funciona por que meu sistema não precisa de acesso a internet. para outros casos pode ser necessária outras soluções.