2012-02-14 8 views
1

私はこのトピックについてウェブ上にいくつかの情報源があることを知っていますが、すべてのアプリケーションサーバーが同時実行性を処理し、スレッドプールを提供する方法を独自に測定しているようです。アプリケーションサーバーで並行処理(スレッドの作成)をコーディングする方法は?

アプリケーションサーバー上で独自のスレッドを作成するのはノー・ゴーですか? (たとえば、新しいスレッド()...) 「はい」の場合、使用されるアプリケーションサーバーとは独立した共通のアプローチが存在しますか?

答えて

0

EJB仕様は、スレッドを管理する責任をEJBコンテナに割り当てます。

エンタープライズBeanインスタンスでスレッドを作成および管理できるようにすると、コンポーネントのライフサイクルを制御するコンテナの機能が妨げられます。 スレッド管理はビジネス機能ではなく、実装の詳細であり、通常は複雑でプラットフォーム固有です。

スレッドを管理することで、エンタープライズBeanの開発者はスレッドの問題に対処できます。マルチスレッド・アプリケーションは引き続き可能ですが、マルチスレッドの制御は、エンタープライズBeanではなくコンテナ内にあります。

ソース:http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html#threads

0

EJB 3.1を使用すると、コンテナによって管理別のスレッドでいくつかのコードを実行することができます@Asynchronous注釈を紹介します。 Howto here.

0

EJBを使用しているときに独自のスレッドを作成しないでください。実際、EJB 3.1では、この目的のために@Asynchronousアノテーションが導入されています。 WebSphereとWebLogicの以前のバージョンでは、WorkManagerが実装されています.WebManagerは、EJBから起動できるワーカースレッドのための別のアドホック標準(JSR 237を最終的に放棄しました)です。

関連する問題