Conexão MySQL com Proxy

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)

Alguém poderia me ajudar/orientar nessa tarefa?

Olá!

Voce pode postar sua String de conexão?

Obrigado pela resposta…

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:

Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, usuario, senha);

Alguma ideia?

Coloquei as linhas à seguir imediatamente antes da conexão com o banco:

System.getProperties().put("proxySet", "true"); System.getProperties().put("http.proxyHost", "10.0.0.10"); System.getProperties().put("http.proxyPort", "3128");

Que vi no post: http://www.andrels.com/wp-pt_BR/index.php/2010/03/configurando-acesso-a-internet-via-proxy-em-aplicacoes-java/

E não vejo nenhuma mudança… Não deu certo

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:

ugrrrrrr

Putz, entendi cara.

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.

abraço

só por desencargo, o correto é:

System.getProperties().put("proxySet", "true"); System.getProperties().put("http.proxyHost", "10.0.0.10"); System.getProperties().put("http.proxyPort", "3128");
ou

System.getProperties().put( "proxySet", "true" ); System.getProperties().put( "proxyHost", "10.0.0.10" ); System.getProperties().put( "proxyPort", "3128" );
:?:

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… :cry:

[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… :cry:
[/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:

System.setProperty(“java.net.useSystemProxies”, “false”);

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.