2009-07-17 22 views
1

私たちは非常にかなり前に作成されたかなりの数のEJB 2ステートレスセッションBeanを持つプロジェクトを持っています。これらは、クライアントからRMI経由でアクセスされる最初の行のBeanではなく、特定の機能を実行するためにそのコードで使用されます。しかし、私はセッションBeanとしてそれらを持つことによって得られるものは何もないと信じるようになりました。この場合、ステートレスセッションBeanは本当に必要ですか?

  • RMIからアクセスする必要はありません。
  • 彼らはどんな状態も保持しません。 彼らは複雑さを減らすために に最初の豆のセットのうち を因数分解したコードです。
  • 彼らは たちは アウトを交換している複数の異なる の実装を持っていない、それは(バグ修正を禁止すると 追加を備えています) 年のためだったとして、それぞれがされています。それらの
  • なし(つまり、彼らは、新しい トランザクションを必要としない 既存のものに参加していない、またはそれ以外の場合は 物事を変えるんです) それらを呼び出す豆からそれらに入ってくる トランザクションを変更しません。

これらはすべて静的な機能を備えたクラスであり、EJBのトラップがまったくないクラスではないのはなぜですか?

答えて

3

私が見ることができる唯一の理由は、(クラスタリングを行っている場合は)クラスタリングのためです。これは、負荷を分散させるためにクラスタリングが正しく行われている場合、別のマシン上の別のVM上にあるBeanに手を届かせることです。

これは当てはまりそうではないかもしれません。EJBへの動きはちょうど工学上のものでした。私もそれに苦しんでいます。

トランザクションでもそれを正当化するには十分ではありませんが、トランザクションを処理し、コマンド型パターンで異なるコードを呼び出す単一のEJBを持つことができます。

+0

POJOに切り替える場合は、テラコッタのようなものでいつでもクラスタリングを実装できます。 – Jon

+0

私は、オーバーヘッドのないEJBの機能を得るために多くの選択肢があることに同意します。しかし、私はそれが問題だとは思わない。 – Yishai

1

ステートレスセッションビーンではなく単純なPOJOであるべきではない理由はないようです。私はこれが、このようにしてEJB 1.xを使用した後に人々が来たという結論だと思います。

また、などのフレームワークがEJBの代わりに存在する理由もあります。これは、です。

標準的なPOJOのものに変更しますが、ユニットや機能テスト(EJBでは少し難しいかもしれません)のセーフティネットがあることを確認してください。

関連する問題