2010-08-08 2 views
1

Может кто-нибудь помочь мне или предложить решение? Я хочу подключиться с компьютера с брандмауэром к другому, где работает сервер postgres. Проблема в том, что на компьютере (клиенте) есть брандмауэр, и у меня нет доступа к его настройке или открытию портов, пинг не отвечает. Компьютер (сервер), где PostgreSQL имеет открытые порты, но я не могу подключиться к нему из другого из-за брандмауэра. Я могу получить доступ только к компьютеру через прокси.Java прокси подключение к postgres

Как я мог с Java-программированием получить доступ удаленно через прокси-сервер к postgres, забыв о брандмауэре?

Java имеет соединение с прокси. Но я не знаю, как это сделать вместе с postgres-соединением.

 System.getProperties().put("proxySet", "true"); 
     System.getProperties().put("proxyHost", "67.210.82.198"); 
     System.getProperties().put("proxyPort", "80"); 

     URL validateURL = new URL("http://domain.com"); 
     URLConnection urlConnection = validateURL.openConnection(); 

     //how put together ??? 

     Class.forName("org.postgresql.Driver"); 
     Connection connection = DriverManager.getConnection("jdbc:postgresql://ipPublica:5432/DataBase","user", "pass"); 
+0

"ProxySet" ничего не делает. Доказательство: установите значение «false». В JDK никогда не было и никогда не было такой собственности, несмотря на различные книги и онлайн-ссылки. Это произошло из долговременного HotJavaBean, инкапсулированного браузера, умершего в 1998 году. – EJP

ответ

1

Попробуйте

System.setProperty("http.proxyHost", "67.210.82.198"); 
System.setPropery("http.proxyPort", "80"); 

String url = "jdbc:postgresql://host:port/database"; 
Properties props = new Properties(); 
props.setProperty("user","myUsername"); 
props.setProperty("password","myPassword"); 
props.setProperty("ssl","true"); 

Class.forName("org.postgresql.Driver"); 
Connection conn = DriverManager.getConnection(url, props); 

подробнее см java networking & proxies.

+0

Большое спасибо другу в понедельник проверит с брандмауэром, теперь я тестирую локально (postgres server), и он работает;) Спасибо – ispan

4

Это невозможно. Соединения PostgreSQL не являются HTTP-соединениями. Yo не может использовать HTTP-прокси для PostgreSQL. Возможно, прокси-сервер socks сделает эту работу.

0

Этот вопрос довольно старый. Он также был задан в списке рассылки PostgreSQL:

http://archives.postgresql.org/pgsql-jdbc/2010-08/msg00021.php

Ответы там сводится к:

  • Используйте SOCKs

  • Если (! Большой IF) вы хотите взломать источник драйвера JDBC, вы можете использовать (большой «возможно»!), чтобы он работал над HTTP-прокси с использованием SSL.

  • Sidekick: Кто-то предложил туннель ssh.

Смежные вопросы