1

私は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

4

1 に答える 1

1

ついに私は私の質問に対する答えを見つけました、

その証明書。問題は、同じURL(com.xxx.xxx)を持つ2つの証明書があり、そのために混乱が発生したということです。

デバイスで使用されていないものを削除し、デバイスとビンゴで使用されているものから新しい.p12を作成しましたが、機能しました。

于 2012-07-17T13:37:58.370 に答える