Não é possível conectar-se ao APNS com java-apns

3

Eu tenho um programa em Java em execução em um servidor com firewall destinado a enviar notificações push para meu aplicativo para iPhone usando java-apns. O problema é que, sempre que tento enviar uma notificação, a biblioteca não consegue se conectar ao servidor APNS. No rastreamento de pilha, parece que ao criar a conexão SSL necessária, a conexão está sendo recusada em algum momento (um java.net.ConnectException com uma mensagem de detalhes de "conexão recusada" está sendo lançado quando a biblioteca chama SSLSocketFactory '% métodocreateSocket).

Não me surpreenderia se o firewall estivesse bloqueando a conexão, mas infelizmente, como não gerencio o servidor, não posso verificar se esse é realmente o caso. O fato de o programa funcionar bem no meu desktop (não-firewall) parece apoiar a teoria.

A minha pergunta é, alguém sabe de algum método pelo qual eu posso encontrar a causa raiz do problema, e / ou alguém pode me dizer o que devo dizer ao administrador do servidor para mudar para fazer as coisas funcionarem (se for na verdade, o firewall é esse o problema)? Meu entendimento de tais coisas é um pouco limitado, mas deve ser tão simples quanto desbloquear conexões de saída na porta 2195 (a porta usada pelos servidores APNS), certo?

Para referência, o servidor é uma caixa do Linux e eu estou usando a versão 0.1.2 do java-apns.

    
por Mac 07.06.2010 / 04:14

1 resposta

4

Bem, você deve começar simplesmente pedindo a ele para desbloquear a porta 2195 de saída.

Veja um exemplo:

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

O texto acima assume que eth0 é a interface externa voltada para a Internet.

Você também pode adicionar uma linha para entrada (supondo que a fonte também seja a porta 2195 na outra extremidade):

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

Se a porta de origem para a comunicação de retorno for randomizada, você terá que usar o módulo de estado no iptables para rastrear a conexão:

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

Isso é muito básico. O administrador é responsável por esse tipo de coisa, e não por você, portanto, a modificação dos itens acima é provavelmente necessária. HTH.

    
por 11.06.2010 / 23:06