2011-10-28 4 views
3

Adam BienがWhy stateful and local anti-facades are KISSを読みましたが、EntityManagerを使用してSFSBを使用してエンティティをクライアントのやりとり全体に保持することを提案しています。コメントで述べたように非シリアル化可能なEntityManagerでのステートフルセッションBeanパッシベーション?

  1. Does'tこれは、クラスタ環境ではない失敗もSFSBは、コンテナによって不活性化されなければならない時はいつでも?

  2. 私が正しいとすれば、あなたはどのような解決策を提案しますか?アプリケーションのレイヤー数を最小限に抑えることで、SFSBを会話スコープにバインドしてJSFビューで直接参照すると便利だと考えました。

+1

私は答えることができます#1:はい、拡張されたPCはパッシベーション(したがってフェイルオーバー)を防止します。私は#2に答える方法がわからない。あなたが解決しようとしている問題が私には分かりません。 –

+0

パッシベーションについては、トランザクションスコープであるか拡張されているかは重要ですか?私のアプリケーションにEJB 3/CDI/JSFを使用するための基本的な設計を解明しようとしています。メモリ消費はおそらく問題ではないので、エンティティをマージする必要を回避するために「ステートフル」な設計になると思った。 – user953217

+0

私は、Txまたは拡張タイプ**が関係すると思います。 * EJB 3.1 FR仕様* ** "4.2ステートフルセッションBeanの会話状態" **: "コンテナ**は、以下の条件が満たされていない限り、拡張永続コンテキストを持つステートフルセッションBeanを不活性化してはいけませんmet:1.永続コンテキスト内のすべてのエンティティは直列化可能です。2. EntityManagerは直列化可能です。 –

答えて

1

一般に、ステートフルベースのアーキテクチャを持つことは、カウンタスケーラブルです。

私は現在、複数のプロジェクトで5年以上EJB 3 SLSBを扱ってきましたが、実体をマージする際に本当の問題はありませんでした。

DTOのレイヤーを追加することで、クライアント層とパーシスタンス層を分離することができます。このようにして、クライアントがデータを提示する方法に応じて、ビジネス/持続性層とDTOに最適なものに基づいてエンティティモデルを設計できます。

同じオブジェクトを使用したい場合でも、それを行うことができますが、「セッション中」でどのオブジェクトが分離されているかにのみ注意し、マージ問題は発生しません。

関連する問題