0

私は Vysper で少し遊んでいて、それをTomEEの Java EE Web アプリケーションに埋め込んでいまし。Vysper は、Java アプリケーションに簡単に埋め込むことができる Apache Mina に基づく XMPP サーバーのアルファ/ベータ バージョンです。Vysper インスタンスを @Startup / @Singleton スコープの Bean に正常にインスタンス化できました。ここまでは順調ですね。Eclipse内からバニラのTomEEインスタンスで実行すると、問題なく動作するようです。

しかし、その後、Java EE アプリケーションはスレッドを使用すべきではないことを思い出しました (スタック オーバーフローでこの回答を参照してください - Java EE コンテナー内のスレッドの生成が推奨されないのはなぜですか? )。よく覚えているのですが、誰かが Java EE アプリ内からそのようなことを実行する必要がある場合は、スレッドのラッパーさえあります。

TomEE+ が Quartz と ActiveMQ をバックエンドとして使用していくつかの Java EE サービスを実装していることは知っていますが、それらはコンテナーの一部であり、Web アプリケーションの一部ではありません。

Mina と Vysper は内部でスレッドを使用しているので、このコンテキストで Vysper を Java EE Web アプリケーションに直接埋め込むのは得策ではないのではないかと思います。もちろん、コンテナの外で XMPP サーバーをシステムの別のコンポーネントとして実行することもできます。これは、クラスター化された展開でもより理にかなっています。

しかし、スタンドアロン展開 (単一の TomEE) で実行していると仮定すると、埋め込まれた Vysper を Java EE Web アプリケーションに実行すると、内部でスレッドに依存するため、有害になる可能性がありますか? そうでない場合、なぜですか?

4

1 に答える 1

1

いくつかのことは禁止されていますが、それはますます厳しくなっており、 tomee (およびほとんどの EE サーバー) はそれを課していません。

あなたが得ることができる唯一の驚きは、管理されていること(セキュリティ、CDIなど)を期待することです.それはコンテナスレッドではないので、あなたはそうではありません. ゲームのこのルールを受け入れれば、問題はありません。

PS: スレッドを正しくシャットダウンすることを忘れないでください

于 2014-09-11T21:20:12.340 に答える