2014年08月15日

Smack4について

私が実装しているシステムでは Openfire にアクセスするために Smack を利用していますが、脆弱性(CVE-2014-0363、CVE-2014-0364)が見つかったため、最新版にアップデートしました。
最新版ではAPI仕様が変更されていたため、プログラムを変更する必要がありましたが、[Smack: Getting Started]通りにはいかなかったため(+日本語の文献がみつけられなかったため)、メモしておきます。

Openfireに 接続 → ログイン → プレゼンス情報更新 → メッセージ送信 → 切断 を行うサンプルプログラムです。

実行環境
Openfire : 3.9.3
Smack : 4.0.0
Java SE : 7u60

【サンプルプログラム】

上記のサンプルプログラムを実行するためには、 smack-core-4.0.0.jar の他に、 smack-tcp-4.0.0.jar も classpath に含める必要があります。

また、Smack が Java SE : 7u55 でビルドされているため、実行環境にインストールされた Java SE のバージョンに注意する必要があります。
(
Java SE : 6 にて実行すると、下記のエラーが発生しました。
"java.lang.UnsupportedClassVersionError: sample/Smack : Unsupported major.minor version 51.0"
)

さらに、[Smack: Getting Started]には "no external dependencies" とあるにもかかわらず、 xpp3-1.1.4c.jar も classpath に含める必要があります。
(
xpp3-1.1.4c.jar を classpath に含めずに実行すると、下記のエラーが発生しました。
"Exception in thread "main" java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserFactory"
)

あと、タイムアウト時間の指定方法が変更されていました。
SmackConfiguration.setPacketReplyTimeout(timeout);

xMPPConnection.setPacketReplyTimeout(timeout);


2016.05.15
Openfireを 3.9.3 → 4.0.2(執筆時最新版) にバージョンアップした場合も、サンプルプログラムはそのまま実行できました。

posted by red at 01:00| Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック