2016-07-03 10 views
8

Mam aplikację Java wdrażającą Smack 4.1.7, której używam jako klienta próbnego dla Openfire 4.0.2. W tej chwili Openfire działa na moim lokalnym hoście. Smack może zalogować się i uwierzytelniać właściwie z tego połączenia:Błąd routingu między Smack i Openfire na 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(); 

Teraz kiedy Smack próbuje utworzyć lub dołączyć do MUC, czasy żądania out (SmackException $ NoResponseException) i Openfire rejestruje następujące:

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> 

Użyłem "localhost", "127.0.0.1" i nazwę mojego komputera jako XMPP_HOST_NAME zarówno po stronie serwera, jak i po stronie klienta, i ciągle pojawia się ten sam błąd. Każda pomoc będzie doceniona.

+0

Przepraszam, czy zrobiłeś login z użytkownikiem? localhost nie działa, nazwa komputera (ale musisz sprawdzić nazwę serwera openfire w panelu sterowania) będzie działać. Dla mnie obecność zi do tej samej osoby wydaje się dziwna, ale muszę sprawdzić – MrPk

+0

tak, logowanie działa poprawnie. Oba działają z localhost, 127.0.0.1 i nazwą komputera (bez względu na to, co jest skonfigurowane na stronie openfire btw). Po nawiązaniu połączenia pojawi się ostrzeżenie po stronie Smack: org.jivesoftware.smack.util.DNSUtil resolveDomain OSTRZEŻENIE: Wyjątek podczas ponownego zapisywania rekordów SRV dla localhost. Rozważ dodanie "_xmpp- (serwer | klienta) ._ tcp" Rekordy DNS SRV, ale od tego połączenia są uruchomione i uwierzytelnianie jest w porządku. – guik

+0

Być może masz proxy i musisz dodać localhost (tak, 127.0.0.1) jako wyjątek ... – MrPk

Odpowiedz

0

Znalazłem problem i błąd. Jak obsługiwać:

Openfire ma 2 wartości:

http.connection.timeout 
http.socket.timeout 

zarówno setted z domyślnej wartości 2000/3000/5000 millisecs jeśli nie dostępnej we właściwościach.

Konieczne jest ustawienie tych wartości przez konsolę administracyjną (lub bazę danych) na wyższą wartość, np. 15000/20000 lub więcej w razie potrzeby.

Więcej w Openfire 4.0.2 (reklama prawdopodobnie starsze wersje też) w index.jsp tam wezwanie do sprawdzenia rssfeed (domyślnie włączona), ale ta rozmowa będzie zresetować te wartości do 3000, tak w zasadzie limity czasu będą bezużyteczne.

Aby wyłączyć rssfeed zestaw do fałszywego

rss.enabled 

a następnie ponownie Openfire.

Powiązane problemy