0

詳細

私は notnoop java-apns push mdm メッセージを使用しています。メイン関数で試してみました push メッセージは問題ありません! しかし、Jetty/Tomcat Web コンテキストで実行される Spring mvm に追加すると、javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure がスローされます。助けて。

spring mvc メソッドの使用

ModelAttribute
RequestMapping("/deviceinfo")
public String pushCommand(HttpServletRequest request)
{
  String id = request.getParameter("id");
  Device device = deviceManager.get(new Long(id));
  log.debug(device);
  log.debug(device.getToken());
  ApnsService service = APNS.newService().withCert( ClassLoader
  .getSystemResourceAsStream("mdm_push.p12"),"123456")
  .withProductionDestination().build();
  String mdmPayload = APNS.newPayload().mdm(device.getToken().getPushMagic()).build();
  service.push(device.getToken().getToken(), mdmPayload);
  log.warn("mdmDeviceInfoCommand");
  return "device form";
}

エラーメッセージ:

INFO [スレッド-19] ApnsConnectionImpl.run(170) | エラー コード javax.net.ssl.SSLHandshakeException の待機中に例外が発生しました: 致命的なアラートを受信しました: handshake_failure at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.Alerts.getSSLException(Alerts.java) :154) で sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959) で sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) で sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl. java:1312) で sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) で sun.security.ssl.AppInputStream.read(AppInputStream.java:102) で java.io.InputStream.read(InputStream.java) で:101) >com.notnoop.apns.internal.ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java: 114) デバッグ [qtp297885139-65] ApnsConnectionImpl.socket(218) | APNS INFO に新規接続しました [Thread-20] ApnsConnectionImpl.run(170) | エラー コード javax.net.ssl.SSLHandshakeException の待機中に例外が発生しました: 致命的なアラートを受信しました: handshake_failure at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.Alerts.getSSLException(Alerts.java) :154) で sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959) で sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) で sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl. java:1312) で sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) で sun.security.ssl.AppInputStream.read(AppInputStream.java:102) で java.io.InputStream.read(InputStream.java) で:101) >com.notnoop.apns.internal. ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java:114) INFO [qtp297885139-65] ApnsConnectionImpl.sendMessage(264) | メッセージの送信に失敗しました >Message(Id=1; Token=07BE34F5A71A; Payload={"mdm":"E101CB39-697A-4883-B303-67713DEE836E"})... >遅延後に再試行しています javax.net.ssl.SSLHandshakeException : 致命的なアラートを受信しました: sun.security.ssl.Alerts.getSSLException(Alerts.java:192) で handshake_failure、sun.security.ssl.Alerts.getSSLException(Alerts.java:154) で sun.security.ssl.SSLSocketImpl.recvAlert (SSLSocketImpl.java:1959) で sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) で sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) で sun.security.ssl.SSLSocketImpl. sun.security.ssl.AppInputStream の readDataRecord(SSLSocketImpl.java:882)。

4

1 に答える 1

0

このエラーは、Tomcat サーバーが p12 ファイルにアクセスできないことが原因である可能性があります。p12 ファイルをサーバーにアップロードするのを忘れたか、ファイルを入れたフォルダーとは別のフォルダーでファイルを探しています。

.getSystemResourceAsStream("mdm_push.p12"),"123456")

おそらく、その呼び出しで p12 ファイルのパスを指定する必要があります。

于 2013-10-28T15:23:31.010 に答える