2016-07-03 10 views
8

Ich habe eine Java-Anwendung Smack 4.1.7 zu implementieren, die ich als Schein-Client für Openfire 4.0.2 verwenden. Im Moment läuft Openfire auf meinem localhost. Smack richtig anmelden und authentifizieren mit dieser Verbindung:Routing-Fehler zwischen Smack und Openfire auf localhost

XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder() 
     .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
     .setServiceName(XMPP_HOST_NAME) // equals xmppDomain on server 
     .setUsernameAndPassword("user1", "pwd1") 
     .setResource("tester") 
     .setDebuggerEnabled(true) 
     .build(); 

Nun, wenn Smack versucht, eine MUC zu erstellen oder zu verbinden, die Anforderungs mal aus (SmackException $ NoResponseException) und Openfire protokolliert das folgende:

2016.07.03 18:58:54 org.jivesoftware.openfire.spi.RoutingTableImpl - 
Unable to route packet. Packet should only be sent to available sessions and the 
route is not available. 
<presence id="WrkXH-6" from="[email protected]/tester" to="[email protected]/tester"> 
    <c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack" ver="NfJ3flI83zSdUDzCEICtbypursw="/> 
</presence> 
2016.07.03 18:58:54 org.jivesoftware.openfire.spi.RoutingTableImpl - 
Failed to route packet to JID: [email protected]/tester packet: 
<presence id="WrkXH-6" from="[email protected]/tester" to="[email protected]/tester"> 
    <c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack" ver="NfJ3flI83zSdUDzCEICtbypursw="/> 
</presence> 

Ich habe "localhost", "127.0.0.1" und den Namen meines Rechners als XMPP_HOST_NAME sowohl auf der Serverseite als auch auf der Clientseite verwendet und erhalte immer wieder denselben Fehler. Jede Hilfe wäre willkommen.

+0

es tut mir leid, haben Sie die Anmeldung mit dem Benutzer gemacht? localhost wird nicht funktionieren, der Computername (aber Sie müssen auf openfire Server-Namen im Control Panel überprüfen) funktioniert. Für mich scheint die Anwesenheit von und zu der gleichen Person seltsam, aber ich muss überprüfen – MrPk

+0

ja, Login funktioniert gut. Es funktioniert sowohl mit localhost, 127.0.0.1 als auch mit dem Computernamen (unabhängig davon, was auf der OpenFire-Seite konfiguriert wurde). Es gibt eine Warnung auf Smack-Seite beim Herstellen der Verbindung: org.jivesoftware.smack.util.DNSUtil resolveDomain Warnung: Ausnahme beim SRV-Datensätze für localhost resov. Erwägen Sie, '_xmpp- (server | client) ._ tcp' DNS-SRV-Einträge hinzuzufügen, aber von dieser Verbindung und der Authentifizierung aus sind sie in Ordnung. – guik

+0

Vielleicht haben Sie einen Proxy und Sie müssen localhost (ja, 127.0.0.1) als Ausnahme hinzufügen ... – MrPk

Antwort

0

Ich habe das Problem und einen Fehler gefunden. Wie handhaben:

Openfire hat 2 Werte:

http.connection.timeout 
http.socket.timeout 

beide setted mit einem Standardwert von 2000/3000/5000 millisecs, wenn nicht in Eigenschaften.

Also ist es notwendig, diese Werte von der Admin-Konsole (oder Datenbank) auf eine höhere, wie 15000/20000 oder mehr, falls erforderlich zu setzen.

Mehr, in Openfire 4.0.2 (ad wahrscheinlich ältere Versionen auch) in index.jsp ein Anruf ist zu prüfen RSSFeed (standardmäßig aktiviert), aber dieser Aufruf wird diese Werte auf 3000 zurückgesetzt, so im Grunde werden Timeouts nicht genutzt.

Um RSSfeed Satz zu falsch

rss.enabled 

und starten Sie Openfire zu deaktivieren.