2016-07-03 2 views
8

У меня есть приложение Java, реализующее Smack 4.1.7, которое я использую как макет клиента для Openfire 4.0.2. В настоящий момент Openfire работает на моем локальном хосте. Смак может войти и проверить подлинность должным образом с этим соединением:Ошибка маршрутизации между Smack и Openfire на 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(); 

Теперь, когда Смак пытается создать или присоединиться к MUC, запрос раз из (SmackException $ NoResponseException) и OpenFire входит следующее:

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> 

Я использовал «localhost», «127.0.0.1» и имя моей машины как XMPP_HOST_NAME как на стороне сервера, так и на стороне клиента, и я продолжаю получать ту же ошибку. Любая помощь будет оценена по достоинству.

+0

Прошу прощения, вы сделали логин с пользователем? localhost не будет работать, имя машины (но вы должны проверить имя сервера OpenFire в панели управления) будет работать. Мне присутствие от и к тому же человеку кажется странным, но я должен проверить – MrPk

+0

да, логин работает нормально. Он работает как с localhost, 127.0.0.1, так и с именем машины (независимо от того, что настроено на стороне openfire кстати). Предупреждение на стороне Smack при установлении соединения: org.jivesoftware.smack.util.DNSUtil resolveDomain ПРЕДУПРЕЖДЕНИЕ: Исключение при изменении SRV-записей для localhost. Подумайте о добавлении «_xmpp- (server | client) ._ tcp 'DNS SRV Records, но appart из этого соединения и аутентификации одобрены. – guik

+0

Возможно, у вас есть прокси-сервер, и вы должны добавить localhost (да, 127.0.0.1) в качестве исключения ... – MrPk

ответ

0

Я нашел проблему и ошибку. Как обращаться:

Openfire имеет 2 значения:

http.connection.timeout 
http.socket.timeout 

как выставиться со значением по умолчанию 2000/3000/5000 миллисекунды, если они недоступны в свойствах.

Поэтому необходимо установить эти значения с помощью консоли администратора (или базы данных) на более высокую, например 15000/20000 или более, если необходимо.

Более того, в Openfire 4.0.2 (объявление, вероятно, более старые версии тоже) в index.jsp есть вызов, чтобы проверить RssFeed (включен по умолчанию), но этот вызов будет сбросить эти значения до 3000, так в основном тайм-ауты будут бесполезны.

Чтобы отключить RssFeed набор для ложных

rss.enabled 

А затем перезапустить Openfire.