Невозможно подключиться к APNS с помощью java-apns

Невозможно подключиться к APNS с помощью java-apns

У меня есть Java-программа, запущенная на сервере с брандмауэром, которая предназначена для отправки push-уведомлений в мое приложение iPhone с помощью java-apns. Проблема в том, что всякий раз, когда я пытаюсь отправить уведомление, библиотека не может подключиться к серверу APNS. Из трассировки стека видно, что при создании необходимого SSL-соединения в какой-то момент соединение отклоняется (выдается сообщение java.net.ConnectExceptionс подробным сообщением «подключение отклонено», когда библиотека вызывает SSLSocketFactoryметод createSocket).

Меня бы совсем не удивило, если бы брандмауэр блокировал соединение, но, к сожалению, поскольку я не управляю сервером, я не могу проверить, что это действительно так. Тот факт, что программа отлично работает с моего (незащищенного брандмауэром) рабочего стола, похоже, подтверждает эту теорию.

Мой вопрос: знает ли кто-нибудь какой-либо метод, с помощью которого я могу найти первопричину проблемы, и/или может ли кто-нибудь сказать мне, что мне следует сказать администратору сервера, чтобы все заработало (если проблема действительно в брандмауэре)? Мое понимание таких вещей немного ограничено, но это должно быть так же просто, как разблокировать исходящие соединения на порту 2195 (порт, используемый серверами APNS), верно?

Для справки: сервер — это Linux-бокс, и я использую версию java-apns 0.1.2.

решение1

Ну, вам следует начать с того, чтобы просто попросить его/ее разблокировать исходящий порт 2195.

Вот пример:

iptables -A OUTPUT -o eth0 -p tcp --dport 2195 -j ACCEPT

Вышеизложенное предполагает, что eth0это внешний интерфейс, выходящий в Интернет.

Возможно, вам также придется добавить строку для входящих данных (при условии, что источником на другом конце также является порт 2195):

iptables -A INPUT -i eth0 -p tcp --sport 2195 -j ACCEPT

Если исходный порт для обратного соединения выбран случайным образом, вам придется использовать модуль состояния в iptables для отслеживания соединения:

iptables -A OUTPUT -o eth0 -p tcp --dport 2195 \ 
         -m state --state NEW, ESTABLISHED, RELATED \
         -j ACCEPT

iptables -A INPUT -i eth0 -p tcp \
         -m state --state ESTABLISHED, RELATED \
         -j ACCEPT

Это очень просто. За такие вещи отвечает администратор, а не вы, поэтому, скорее всего, потребуется модификация вышеизложенного. HTH.

Связанный контент