2012-07-16 54 views
1

我正在为Java开发Java推送通知服务,并且为此我使用了JavaPNS 2.2。我已使用此site上的教程来创建我的Apple证书,并成功运行演示(使用PHP)。 (我也转换了.p12,.pem文件中的证书)。JavaPN抛出SSLHandshakeException java.io.EOFException:SSL对端关闭不正确

然而,当我尝试在我的测试类(如JavaPNS教程中指定)运行在Java中简单的推送通知,

public class PushTest { 

public static void main(String[] args) { 
    try { 
     List<PushedNotification> notifications = Push.alert("Hello World!", "<filename>.p12", "<password>", true, "<devicetoken>"); 
     System.out.println("List of Device: "+notifications); 

     List<Device> inactiveDevices = Push.feedback("<filename>.p12", "<password>", true); 
    } catch (CommunicationException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (KeystoreException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

我得到,

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source) 
    at java.io.OutputStream.write(Unknown Source) 
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:402) 
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:350) 
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:320) 
    at javapns.Push.sendPayload(Push.java:177) 
    at javapns.Push.test(Push.java:132) 
    at javapns.test.NotificationTest.pushTest(NotificationTest.java:83) 
    at javapns.test.NotificationTest.main(NotificationTest.java:46) 

调试JavaPNS后代码在月食我来知道错误是由于,

java.io.EOFException: SSL peer shut down incorrectly 

现在我不在站在什么问题上,因为我的证书(使用.PEM扩展名)在PHP示例中正常工作。

如果它在PHP中工作,而不是在Java中,我怀疑它的证书的错误,并且JavaPNS站点也没有指定天气,我必须通过keytool导入生成的证书。

任何人都可以请帮我解决我的问题吗? FYI:我的系统配置, OS:Win 7的 的Java:jdk1.6.0_05 JavaPNS:2.2

回答

1

终于让我找到回答我的问题,

其证书。问题是,有两个证书具有相同的URL(com.xxx.xxx),并且因此发生混淆。

我已经删除了未使用的设备,并从设备和Bingo中使用的一个新的.p12,它的工作。