0

Openfire サーバー (バージョン 3.7.0) を Java アプリケーションに埋め込むことはできますか?

Eclipse のサーバーで統合テストを実行しようとしています。ただし、Openfire はスタンドアロン モードであるため (その ServerStarter ブートストラップ クラスを検出できることが条件です)、サーバーがシャットダウンしようとすると、System.exit(0) が呼び出されますが、これは望ましくありません。

これが起こらないようにする方法はありますか?つまり、Openfire がそのブートストラップ クラスを見つけるのを故意に防止するだけではありませんか?

4

1 に答える 1

3

私は、Openfire を手動でセットアップしようとするよりもかなり簡単で、はるかに簡単な成功したアプローチを持っています。

Openfire をマシン (Mac、PC など) にインストールし、組み込みデータベースを使用して管理コンソールでセットアップし、必要に応じて openfire.xml から adminConsole をコメントアウトします。

単体テストを実行する場所にディレクトリをコピーします。正確な再現性を確保したい場合は、テストを実行するたびにディレクトリを圧縮および解凍することをお勧めします。

すべての jar (openfire、hsqldb、mail、bouncycastle、jasper など) が追加されていることを確認します。

これで、正常に起動および停止できるはずです。Openfire には 1 つの癖があります。シングルトン指向なので、シャットダウンしてもそのシングルトンインスタンスは残りますので、単体テストなどで使いたい場合は XMPPServer.getInstance() を呼び出してインスタンスが既に存在するかどうかを確認する必要があります。 getInstance() が null を返す場合は、コンストラクターを呼び出します。

それが役立つことを願っています。

于 2011-07-29T20:53:47.550 に答える