MobileFirst APNS 推送通知失败并出现 java.net.SocketException(连接被远程主机关闭)

Posted

技术标签:

【中文标题】MobileFirst APNS 推送通知失败并出现 java.net.SocketException(连接被远程主机关闭)【英文标题】:MobileFirst APNS push notifications fails with java.net.SocketException (Connection closed by remote host) 【发布时间】:2015-07-27 12:36:23 【问题描述】:

我有一个 MobileFirst 应用程序尝试使用生产 APNS 证书发送推送。

提交推送时出现此异常:

    INFO: Failed to send message Message(Id=2; Token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; Payload="aps":"alert":"body":"Blah blah blah","action-loc-key":null,"sound":"","badge":1,"payload":"\"alias\":\"News_fr\",\"custom\":\"data\"")... trying again after delay
java.net.SocketException: Connection closed by remote host
        at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1510)
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
        at java.io.OutputStream.write(OutputStream.java:75)
        at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:240)
        at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:230)
        at com.notnoop.apns.internal.ApnsPooledConnection$2.run(ApnsPooledConnection.java:47)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

服务器在 Debian GNU/Linux 7 (wheezy) 上运行 Oracle JRE 1.7 和 Tomcat 7。 MobileFirst 版本是 6.3.0。

它与开发证书配合得很好。

我开发了一个独立的 Java 应用程序(使用 JavaAPNS 而不是 Notnoop),以使用相同的证书在我的本地环境中重现该问题,并且它适用于 Java 1.6 但不是更高版本。

【问题讨论】:

你在 Tomcat 中尝试过使用 Java 1.6 吗? 不,我没有尝试 Java 1.6,因为它是一个生产环境,我没有安装新版本 Java 的权限。在要求“降级”Java 版本之前,我想确认问题出在 Java 版本。 我会看看我能做什么,并告诉你Java版本是否是这里的问题 我要求使用 Java 1.6 修改我的预生产环境。 它适用于我的独立应用程序和 MobileFirst 服务器。对我来说,在生产模式下向 Apple 发送推送通知时,JRE 1.7 上的 MobileFirst 存在问题 【参考方案1】:

为此问题开立了 PMR(支持票证),客户决定将已安装的 Java 降级到 Oracle Java 1.6,之后成功恢复发送推送通知。

【讨论】:

您好,我已经更新了我的推送插件,之后我可以注册 ios 设备但通知无法推送,因为我可以在服务器日志中看到错误,抛出套接字异常。为什么它的以前版本与当前版本不同?产品版本:8.0.0.00-20200121-1306。【参考方案2】:

为了将来参考,我还看到当apns-certificate-sandbox.p12 已过时或生成不正确时会发生此确切错误。按照these instructions 重新生成该文件(并重新部署.wlapp)解决了该问题。

【讨论】:

以上是关于MobileFirst APNS 推送通知失败并出现 java.net.SocketException(连接被远程主机关闭)的主要内容,如果未能解决你的问题,请参考以下文章

APNS:无效令牌导致所有后续推送通知失败

Worklight 推送通知 (APNS) 失败并出现 javax.net.ssl.SSLHandshakeException

MobileFirst Starter - 生产模式下的 Bluemix 推送通知失败

IBM MobileFirst 7.1.0 APNS 证书错误:无法处理证书

IBM MobileFirst 8 - 推送通知错误代码:invalid_client

ZPush--基于netty4实现的苹果通知推送服务(APNs)Javaclient