2012-05-16 3 views
0

У меня есть приложение для воспроизведения, подключающееся к базе данных по 1.2.3.4, но по какой-то причине Play! (и другие приложения Java тоже) не могут подключиться к нему.Java-приложения не могут подключаться к IP-адресу, но я могу пинговать его

Я попытался отредактировать файл hosts и установить имя для IP-адреса, например app01 1.2.3.4, однако он работал только в том месте, где размещалась БД, и он не работал на внешних машинах. Я могу подтвердить, что правый порт открыт в iptables, и я тоже попытался перезапустить его.

Если я пинг postgres в порту 4567 в 1.2.3.4 из того же поля, он работает. Но установка одного и того же IP-адреса в моих java-приложениях не выполняется. Что не так? Выпускаются ли разрешения или iptables? Благодарю.

Стек след:

Caused by: java.net.NoRouteToHostException: No route to host 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) 
     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) 
     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) 
     at java.net.Socket.connect(Socket.java:546) 
     at java.net.Socket.connect(Socket.java:495) 
     at java.net.Socket.<init>(Socket.java:392) 
     at java.net.Socket.<init>(Socket.java:206) 
     at org.postgresql.core.PGStream.<init>(PGStream.java:62) 
     at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76) 
     ... 35 more 
+0

У вас действительно есть IP 1.2.3.4? какой у вас IP-адрес от вашего ПК? я думаю, сообщение об ошибке говорит everythink ... вы не в той же подсети, как 1.2.3.4 ip – Tobi

+0

lol это на самом деле 72.15.xxx.xx я не хотел публиковать реальный IP здесь :) – crockpotveggies

+0

пишите код, который вы написали. –

ответ

0

Можете ли вы подключиться к своей БД через pgadmin (http://www.pgadmin.org/)? Можете ли вы подключить telnet от вашего компьютера к серверу БД на данном порту (telnet 1.2.3.4 4567)? Если вы не можете telnet, возможно, сервер БД блокирует ваши подключения? Установили ли вы какой-либо прокси-сервер либо только для Java, либо только для остальной части системы? Из-за исключения кажется, что это больше проблема с сетью, чем что-либо с java ...

+0

прямо сейчас проверка через PGAdmin будет быстро обновляться – crockpotveggies

+0

Хорошо спасибо, что напомнил мне о PGA :) Это определенно помогло отладить. проблема была абсолютно связана с сетью. поэтому каким-то образом файл iptables был переопределен, и порт был удален. должно быть, обновление. я отлаживал его и исправлял. благодаря! – crockpotveggies

0

Вы можете проверить настройки брандмауэра на сервере БД. Вы можете попробовать по telnet, чтобы проверить, можете ли вы подключиться или нет.

0

Если вы находитесь за маршрутизатором, вы ДОЛЖНЫ БЫТЬ ПРОВЕРИТЬ его с другого локального компьютера (используя локальный IP-адрес), но вы можете не иметь возможности выполнить ping извне, если вы неправильно перенаправляете порт (это можно настроить с вашего маршрутизатора).

Еще одна вещь, которую следует учитывать, заключается в том, что вы НЕ МОЖЕТЕ пингуть свой внешний IP-адрес из сети, это означает, что вы можете выполнить ping 192.168.1.100 (Server) с 192.168.1.xx (Client), но вы не может выполнить ping 72.15.xx.xx (переадресован на 192.168.1.100) из 192.168.1.xx (Клиент).

Для того, чтобы сделать это, вы должны использовать внешний инструмент, есть много полотен, которые могут сделать это для вас, вот что я использую:

http://www.yougetsignal.com/tools/open-ports/

Если он говорит, что порт тогда он открыт, и теперь он должен работать, если он закрыт, тогда вы должны дважды проверить, что ваш брандмауэр разрешает данные, возможно, временно отключите его, чтобы увидеть, что это проблема.

Если вам нужна помощь в добавлении исключения порта в ваш брандмауэр или переадресации порта с вашего маршрутизатора, просто скажите мне, какой дистрибутив/routerModel вы используете, и я попытаюсь найти дополнительную информацию для вас.

+0

Похоже, мне потребовалось слишком много, чтобы добавить этот ответ: P Я рад, что вы исправили его, чтобы отправиться на прием! –