问题
I am working on a chat app using xmpp,As per our requirement we have three server Apache Tomcat 7,ejabbered 2.1.11 and mysql 5.5,
to run xmppbot on tomcat used below library
-Smack-core-4.0.3.jar
-smack-tcp-4.0.3.jar
-xlightweb2.5.jar
-xpp3-1.1.3.3.jar
-xSocket-2.4.6.jar
Using above library I am able to Connect with ejabberd and able to login with my login id and password but after some time of logging in connection gets close automatically and a am getting below stack trace
Sep 16, 2014 4:36:01 PM org.jivesoftware.smack.XMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection closed with error
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...</text></error></iq>... @1:1347
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2919)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:2928)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1112)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1061)
at org.jivesoftware.smack.tcp.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.tcp.PacketReader.access$000(PacketReader.java:47)
at org.jivesoftware.smack.tcp.PacketReader$1.run(PacketReader.java:81)
Sep 16, 2014 4:37:15 PM org.jivesoftware.smack.XMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection closed with error
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...</text></error></iq>... @1:1347
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2919)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:2928)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1112)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1061)
at org.jivesoftware.smack.tcp.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.tcp.PacketReader.access$000(PacketReader.java:47)
at org.jivesoftware.smack.tcp.PacketReader$1.run(PacketReader.java:81)
and above messages keeps repeating in loop in my eclipse console!!!
can anyone explain me
- What is the reason for the above error?
- How can I solve above error?
Thanks in advance!!!
回答1:
- What is the reason for the above error?
Then connection went down unexpectedly. For example because the server closed it in an unclean way.
- How can I solve above error?
There can be many causes for this. You should handle the exception and re-establish the connection.
回答2:
You need to set a heartbeat(ping) interval to overcome timeouts over idle connections. Timeouts need not necessarily be in the applications, they can be in the routers/switches in the path.in the example, 600 represents 10 minutes.
PingManager.getInstanceFor(connection).setPingInterval(600);
来源:https://stackoverflow.com/questions/25882594/java-io-eofexception-no-more-data-available-expected-end-tag-streamstream