在测试建立两台服务器间的通信时报错,建立服务期间session出错,debug信息如下:
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Trying to connect to **:5269(DNS lookup: **:5269)
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Plain connection to **:5269 successful
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Indicating we want TLS to **
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Negotiating TLS with **
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - TLS negotiation with ** was successful
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Error, EXTERNAL SASL and SERVER DIALBACK were not offered by **
[DEBUG,LocalOutgoingServerSession,pool-12-thread-5] LocalOutgoingServerSession: OS - Going to try connecting using server dialback with: **
[DEBUG,DNSUtil,pool-12-thread-5] No SRV record found for: _xmpp-server._tcp.**
javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '_xmpp-server._tcp.**'
at com.sun.jndi.dns.DnsClient.checkResponseCode(DnsClient.java:596)
at com.sun.jndi.dns.DnsClient.isMatchResponse(DnsClient.java:553)
at com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:399)
at com.sun.jndi.dns.DnsClient.query(DnsClient.java:186)
at com.sun.jndi.dns.Resolver.query(Resolver.java:64)
at com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:413)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:213)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:121)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:109)
at javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:123)
at org.jivesoftware.openfire.net.DNSUtil.srvLookup(DNSUtil.java:200)
at org.jivesoftware.openfire.net.DNSUtil.resolveXMPPDomain(DNSUtil.java:131)
at org.jivesoftware.openfire.server.ServerDialback.createOutgoingSession(ServerDialback.java:209)
at org.jivesoftware.openfire.session.LocalOutgoingServerSession.createOutgoingSession(LocalOutgoingServerSession.java:400)
at org.jivesoftware.openfire.session.LocalOutgoingServerSession.authenticateDomain(LocalOutgoingServerSession.java:167)
at org.jivesoftware.openfire.server.OutgoingSessionPromise$PacketsProcessor.sendPacket(OutgoingSessionPromise.java:262)
at org.jivesoftware.openfire.server.OutgoingSessionPromise$PacketsProcessor.run(OutgoingSessionPromise.java:238)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
[DEBUG,DNSUtil,pool-12-thread-5] No SRV record found for: _jabber._tcp.**
javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '_jabber._tcp.**'
at com.sun.jndi.dns.DnsClient.checkResponseCode(DnsClient.java:596)
at com.sun.jndi.dns.DnsClient.isMatchResponse(DnsClient.java:553)
at com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:399)
at com.sun.jndi.dns.DnsClient.query(DnsClient.java:186)
at com.sun.jndi.dns.Resolver.query(Resolver.java:64)
at com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:413)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:213)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:121)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:109)
at javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:123)
at org.jivesoftware.openfire.net.DNSUtil.srvLookup(DNSUtil.java:200)
at org.jivesoftware.openfire.net.DNSUtil.resolveXMPPDomain(DNSUtil.java:133)
at org.jivesoftware.openfire.server.ServerDialback.createOutgoingSession(ServerDialback.java:209)
at org.jivesoftware.openfire.session.LocalOutgoingServerSession.createOutgoingSession(LocalOutgoingServerSession.java:400)
at org.jivesoftware.openfire.session.LocalOutgoingServerSession.authenticateDomain(LocalOutgoingServerSession.java:167)
at org.jivesoftware.openfire.server.OutgoingSessionPromise$PacketsProcessor.sendPacket(OutgoingSessionPromise.java:262)
at org.jivesoftware.openfire.server.OutgoingSessionPromise$PacketsProcessor.run(OutgoingSessionPromise.java:238)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
[DEBUG,ServerDialback,pool-12-thread-5] ServerDialback: OS - Trying to connect to **:5269(DNS lookup: **:5269)
[DEBUG,ServerDialback,pool-12-thread-5] ServerDialback: OS - Connection to **:5269 successful
[DEBUG,ServerDialback,pool-12-thread-5] ServerDialback: OS - Sent dialback key to host: ** id: 6b46155b from domain: 192.168.6.237
[DEBUG,ServerDialback,pool-12-thread-5] ServerDialback: OS - Unexpected answer in validation from: ** id: 6b46155b for domain: 192.168.6.237 answer:<stream:features xmlns:stream="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><dialback xmlns="urn:xmpp:features:dialback"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/></stream:features>
[DEBUG,OutgoingServerSocketReader,Outgoing Server Reader] OutgoingServerSocketReader: Finishing Outgoing Server Reader. No session to close.
java.net.SocketException: socket closed
设置xmpp.server.tls.enabled 为 false, 建立非tls服务器间会话,
之后debug信息:
LocalOutgoingServerSession: OS - About to try connecting using server dialback XMPP 1.0 with:**
...
之后通信一切正常。
原因下篇文章继续说明。