私はApple用のJavaでプッシュ通知サービスを開発しており、そのためにJavaPNS 2.2を使用しています。このサイトで利用可能なチュートリアルを使用して、Apple で証明書を作成し、デモ (PHP) を正常に実行しました。(.p12、.pem ファイルの証明書も変換しました)。
ただし、テストクラスで Java で単純なプッシュ通知を実行しようとすると (JavaPNS チュートリアルで指定されているように)、
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)
EclipseでJavaPNSコードをデバッグした後、エラーが原因であることがわかりました。
java.io.EOFException: SSL peer shut down incorrectly
私の証明書 (.PEM 拡張子付き) は PHP の例で正常に動作するため、何が問題なのか理解できません。
Java ではなく PHP で動作している場合、その証明書の障害が疑わしく、JavaPNS サイトでも天気が指定されていないため、生成された証明書をインポートするkeytool
必要があります。
誰でも私の問題を解決するのを手伝ってもらえますか? 参考: 私のシステム構成、OS: Win 7 Java: jdk1.6.0_05 JavaPNS: 2.2