Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌云Messanger,“比预期更多的ACK”_Java_Spring_Google Cloud Messaging - Fatal编程技术网

Java 谷歌云Messanger,“比预期更多的ACK”

Java 谷歌云Messanger,“比预期更多的ACK”,java,spring,google-cloud-messaging,Java,Spring,Google Cloud Messaging,每隔一段时间,我就会在服务器上从客户端收到一条类似以下内容的消息: INCOMING MESSAGE!!!!!!!!!!!! <message id='2u650-31' to='xxxxxxxxxxx@gcm.googleapis.com/Smack0152E3A3' type='error'><error type="cancel"><not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>&

每隔一段时间,我就会在服务器上从客户端收到一条类似以下内容的消息:

INCOMING MESSAGE!!!!!!!!!!!!
<message id='2u650-31' to='xxxxxxxxxxx@gcm.googleapis.com/Smack0152E3A3' type='error'><error type="cancel"><not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Received more acks than expected.</text></error><gcm xmlns="google:mobile:data">{&quot;to&quot;:&quot;ClientsRegistrationIDGoesHere&quot;,&quot;message_id&quot;:&quot;1054919404&quot;,&quot;message_type&quot;:&quot;ack&quot;}</gcm></message>
GCM PACKET
com.bannervision.web.controller.admin.SmackCcsClient$GcmPacketExtension@6454f46b
JSON
{"to":"ClientsRegistrationIDGoesHere","message_id":"1054919404","message_type":"ack"}
WARNING: Not connected anymore, echo message is not sent
org.jivesoftware.smack.SmackException$NotConnectedException
    at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:584)
    at com.bannervision.web.controller.admin.SmackCcsClient.send(SmackCcsClient.java:106)
    at com.bannervision.web.controller.admin.SmackCcsClient.sendDownstreamMessage(SmackCcsClient.java:84)
    at com.bannervision.web.controller.admin.SmackCcsClient.handleUpstreamMessage(SmackCcsClient.java:228)
    at com.bannervision.web.controller.admin.SmackCcsClient$2.processPacket(SmackCcsClient.java:409)
    at org.jivesoftware.smack.XMPPConnection$ListenerWrapper.notifyListener(XMPPConnection.java:1233)
    at org.jivesoftware.smack.XMPPConnection$ListenerNotification.run(XMPPConnection.java:1143)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
    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:722)

Oct 08, 2014 10:36:01 PM com.bannervision.web.controller.admin.SmackCcsClient$2 processPacket
SEVERE: Failed to process packet
org.jivesoftware.smack.SmackException$NotConnectedException
    at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:584)
    at com.bannervision.web.controller.admin.SmackCcsClient.send(SmackCcsClient.java:106)
    at com.bannervision.web.controller.admin.SmackCcsClient$2.processPacket(SmackCcsClient.java:415)
    at org.jivesoftware.smack.XMPPConnection$ListenerWrapper.notifyListener(XMPPConnection.java:1233)
    at org.jivesoftware.smack.XMPPConnection$ListenerNotification.run(XMPPConnection.java:1143)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
    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:722)
弹出的错误似乎不会影响任何其他内容,所有内容都会按其应有的方式发送和传入,但在该错误开始弹出后,它将每5秒继续一次

问题: 我如何捕捉这个错误?错误仅出现在xml中。这不应该被视为nack消息吗? 或 更好的是,我如何预防它


有什么想法吗?

这些错误肯定是相关的。我的问题是,我每次发送消息时都在呼叫连接。这是因为我替换了Google的main方法,并没有在编译时形成连接,而是在发送时形成连接

我添加了这个@PostConstruct是专门针对spring的:

@PostConstruct
    public void init() throws Exception{
        try {
            smackCcsClient.connect(Long.parseLong(env.getProperty("gcm.api")), env.getProperty("gcm.key"));
        }catch (IOException e ){
            e.printStackTrace();
        }catch(SmackException e){
            e.printStackTrace();
        }catch(XMPPException e){
            e.printStackTrace();
        }
    }
然后再也不要给connect打电话了。唯一使用连接的其他时间是接受消息时。所有发送消息都使用相同的连接。这是一个代表我的网站的重大事件