使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败
Posted
技术标签:
【中文标题】使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败【英文标题】:APNS NetworkIOException SSLHandshake Failure in Centos with java version 1.6.0_37 【发布时间】:2016-04-13 15:09:13 【问题描述】:我在将通知推送到我的 Linux 服务器中存在的所有应用程序的 APNS 服务器时遇到问题。
它有时会推送通知,有时会抛出错误,检查证书没问题。
我使用 java_apns 来推送通知。
以下是我遇到的错误,谁能帮我解决这个问题。
2016-04-13 10:15:41,245 [pool-1-thread-1] WARN com.timeinc.ae.push.services.APNSService - com_timesmedia_countrylife_magazine Error posting to multiple devices
com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.notnoop.apns.internal.Utilities.wrapAndThrowAsRuntimeException(Utilities.java:284)
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:342)
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:312)
at com.notnoop.apns.internal.ApnsPooledConnection$2.call(ApnsPooledConnection.java:43)
at com.notnoop.apns.internal.ApnsPooledConnection$2.call(ApnsPooledConnection.java:41)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:941)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1320)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:698)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:119)
at java.io.OutputStream.write(OutputStream.java:75)
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:328)
... 8 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:922)
... 13 more
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我的代码在证书上运行良好,但突然因为握手失败而停止工作。
我们终于发现问题是当证书在外部战争文件(一些本地文件夹)时。
1) 使用 apns_test 进行第一次测试(节点测试) 如果这会发送测试通知,那么您的安全配置有问题。
最后将证书放入war文件中。如果您正在测试侧文件夹,那么您可能会遇到这个问题。
当我将证书放入war文件时,这对我有用。
【讨论】:
以上是关于使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OS X 上安装了 Java 7,但终端仍在使用版本 6