お知らせ
2023.12.5(Tue)
目次
こんにちは。ぐっさんです。
XMPP通信を行うモジュールを開発し、動作確認をしていたところ、なぜか相手からのメッセージを受け付けられない事象が発生しました。
キューの内容を確認したところ、キューにメッセージが入ってすぐ、下記のエラーが返されていました。
<iq id="334" to="user1@192.168.1.1/client" from="user2@192.168.1.2/resource" type="error"> <error code="501" type="CANCEL"> <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/> </error> </iq>
メッセージを見ると501のエラーコードがでて、キャンセルされているようです。
ただ、受け取ろうとした側では、エラーが何もでず、何をしたらいいのか全くわかりません…………。
エラー発生時の環境は以下になります。
何度もプログラムを確認し、いくら探してもプログラムの要因が見つかりませんでした。
結果的には、XMPP通信のクライアントライブラリとして使用していた、smackが使用する設定ファイルが無かったことが原因でした。
META-INFの下にsmack.providersを設定し、Providerクラスを下記のように指定することで解消しました。
<?xml version="1.0"?> <smackProviders> <extensionProvider> <elementName>x</elementName> <namespace>jabber:iq:event</namespace> <className>org.jivesoftware.smack.packet.MessageEvent</className> </extensionProvider> </smackProviders>
ファイルが見つからない等のエラーが、発生してくれれば分かりやすかったのですが…………。
何も出ないと原因究明に時間がかかってしまいますね。
それでは、よいXMPPライフを!