2017-03-27 9 views
1

Ejabberdで新しいSmack 4.2が実装されました。ログインしていないと接続が切断されました。ログインまたは登録する前に接続を作成したいと思います。同じコードがOpenfireサーバーで正常に動作しています。Error smackで接続が閉じられました4.2

接続が作成されると、数秒(約30秒)でこのエラーが発生します。 接続XMPPTCPConnection [-認証されていません](0)エラー org.jivesoftware.smack.XMPPException $ StreamErrorExceptionで閉鎖:接続タイムアウトあなたはそれが再接続でhttp://xmpp.org/rfcs/rfc6120.html#streams-error-conditions

で、このストリームエラーの意味についての詳細を読むことができますスマックリコネクションマネージャ(0)java.lang.IllegalArgumentExceptionが::ユーザー名がorg.jivesoftware.smack.util.StringUtils.requireNotNullOrEmptyでnullまたは 空にすることはできません(StringUtils.java:468このエラー

致命的な例外でクラッシュします) at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:484) at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:448) at org.jivesoftware.smack.ReconnectionManager $ 2.run(ReconnectionManager.java:254) at java.lang.Thread.run(Thread.java :818)

if (connection == null || !connection.isConnected()) { 
     XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration 
       .builder(); 
     config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
     DomainBareJid serviceName = JidCreate.domainBareFrom(Constants.SERVER_NAME); 
     config.setServiceName(serviceName); 
     InetAddress inetAddress = InetAddress.getByName(Constants.HOST); 
     config.setXmppDomain(Constants.SERVER_NAME); 
     config.setHostAddress(inetAddress); 
     config.setHost(Constants.HOST); 
     config.setPort(Constants.PORT); 
     config.setResource(Constants.RESOURCE); 
     config.setDebuggerEnabled(true); 
     SASLAuthentication.blacklistSASLMechanism("PLAIN"); 
     SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5"); 
     SASLAuthentication.unBlacklistSASLMechanism("SCRAM-SHA-1"); 
     XMPPTCPConnection.setUseStreamManagementDefault(true); 
     connection = new XMPPTCPConnection(config.build()); 
     initializingMessageReceivedListeners(); 
     enableReConnection(); 
     connection.connect(); 
    } 

おかげで事前に設定のコードの

一部の行。

+0

なぜコードを追加しないのですか? – MrPk

+0

確認接続中にユーザー名がヌルまたは空です。 ユーザー名がヌルまたは空であることがログに明記されています。 –

+0

実際には、ログインと登録の前に接続を作成したいと思います。接続さえも作成されますが、数秒で壊れます。ログインと登録をしながら時間を節約する前に接続を作成する。これはまた、Openfireで正常に動作していますか?Ejabberdで設定を変更する必要がありますか? – Neha

答えて

0

私自身の質問への解決策を見つけたOpenfireでは、ログインしていなくてもEjabberdが壊れても接続を作成できるようになっていますが、この時間を遅らせることができます。

関連する問題