1

apache camel を使用して、gtalk アカウントを使用してインスタント メッセージを送信しようとしています。

Apache camel xmpp コンポーネントを使用しました。jabber アカウントに接続して、メッセージを正常に送信できました。Jabber アカウントについては、次の URL を使用しています

xmpp://abc@jabber.org/praveen@gmail.com?password=secret"

これにより、abc jabber アカウントから praveen gmail アカウントにメッセージが送信されます。しかし、Gmail アカウントからメッセージを送信しようとすると、以下の例外で失敗します

xmpp://talk.google.com:5222/abc@jabber.org?serviceName=gmail.com&user=praveen&password=secret

Caused by: SASL authentication PLAIN failed: invalid-authzid: 
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:337)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203)
at org.apache.camel.component.xmpp.XmppEndpoint.createConnection(XmppEndpoint.java:169)
at org.apache.camel.component.xmpp.XmppPrivateChatProducer.doStart(XmppPrivateChatProducer.java:105)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:387)
... 7 more

これについて調査したところ、Google は SASL をサポートしていないことがわかりました。だから私は設定する必要があります

setSASLAuthenticationEnabled(false);

org.jivesoftware.smack.ConnectionConfiguration で動作させます。しかし、このパラメーターを設定するためのパラメーターがラクダのドキュメントに見つかりませんでした。

誰もこれを成功させましたか?はいの場合、これに関する情報を教えてください。

ありがとう、 パラニベル・ラジャン B

4

1 に答える 1

2

ソースを見ると、現在の実装ではこれを行う方法がないようです。

if (port > 0) {
        if (getServiceName() == null) {
            connection = new XMPPConnection(new ConnectionConfiguration(host, port));
        } else {
            connection = new XMPPConnection(new ConnectionConfiguration(host, port, serviceName));
        }
    } else {
        connection = new XMPPConnection(host);
    }

この機能を XMPP コンポーネントに追加するのは難しいことではありません (そのような場合にそのためのパッチを追加したい場合があるため、camel の将来のバージョンに組み込まれる可能性があります)、または XmppEndpoint クラスから派生させてオーバーライドすることもできます。 createConnection メソッド。元のエンドポイントの代わりにカスタム エンドポイントが使用されるようにするために、XMPP コンポーネントの他のクラスをオーバーライドする必要がある場合があります。

于 2012-08-19T08:57:13.200 に答える