問題タブ [stateful-session-bean]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - EJB Bean は別の未完了トランザクションに関連付けられています
このスニペットを見てください:
私の意図は、タイプ C のオブジェクトのコレクションを処理することです。メソッド doSthInB はエンティティを変更し、メソッド呼び出しの最後に結果を保持する必要があります (そのため、REQUIRES_NEW を使用しています)。入力コレクションの一部の要素の処理中に何らかのエラーが発生した場合、この操作のみを永続化するべきではなく、ログに記録する必要があり、他の要素の処理を停止するべきではありません。
処理中に得られるものは次のとおりです。javax.ejb.EJBException: java.lang.IllegalStateException: Bean is associated with a different unfinished transaction
多分私の考えは間違っています。任意のヒント?
jsf - @Stateful と @SessionScoped の両方をショッピング カート EJB に使用する
Web アプリケーションでステートフル EJB とステートレス EJB を使用することについて、多くの議論があることは知っています。
ショッピング カートは最も一般的なユース ケースです。Oracle の Java EE の例では、公式ドキュメントでもショッピング カートが頻繁に使用されています。
ここで、stackoverflow で、JavaEE のショッピング カートのジレンマのような多くの興味深い回答を見つけました。
わかりました... SFSB は、企業の複雑なシナリオに適しています。たとえば、それらを他のアプリケーションと共有し、JSF/Web クライアントだけでなく利用できるようにする場合などです。
しかし... おじいちゃんの電子商取引 Web サイトを開発しているだけの場合は、HttpSession / SessionScoped cdi-managed Bean に固執し、SLSB でビジネス メソッドを記述します。SLSB の方が効率的であるなどの理由で...
ただし、私はまだ学習と発見の段階にあるので、単純なショッピング カートを作成するために、自分で SFSB を試してみたいと思います。
@Stateful ショッピング カート ejb インターフェースの JNDI 取得インスタンスを HttpSession に保存することを提案する興味深いチュートリアルを見ました。これは、Web クライアントが最初にそれを必要としたときに、Web セッション中に通常どおり使用することです。私の JSF プレゼンテーション レイヤーでは、@SessionScoped @Named Bean (これをShopControllerと呼びましょう) があり、その初期化でステートフル ejb の 1 つのインスタンスをインスタンス変数に格納するとします。
@SessionScoped CDI アノテーションを付けることで、@Stateful Bean を http セッションに直接バインドすることは可能でしょうか。
上記のように機能しますか?CDI は Web セッションごとに 1 つの SFSB を作成しますか?
migration - EJB 2.1 から EJB 3 へのステートフル セッション Bean の移行 - 引数を持つ create メソッドを移行する方法
ステートフル セッション Bean を EJB 2.1 から EJB 3.0 に移行しようとしています。EJBHome を拡張する Bean のホーム インターフェイスには 2 つの引数を持つ create メソッドがあり、対応する Bean には一致する引数の ejbcreate メソッドともう 1 つの引数のない ejbcreate メソッドがあります。私の質問は- 1. このステートフル セッション Bean を移行するために、1 つは引数なし、もう 1 つは arg の 2 つのコンストラクタを作成する必要がありますか? 2. ejbcreate メソッドのコードが「CreateException」と実行時例外をスローしています。現在、ejbcreate は「CreateException」のスローを定義しています。コンストラクターで「Thorws CreateException」を定義する必要がありますか、それともコード内の作成例外のスロー部分をスキップできますかコンストラクタの。
あるブログに投稿された他の代替案は、メソッドを作成して @init で注釈を付けることですが、これが EJB3 Bean の EJB2 クライアント ビューについて話していた方法であるかどうかはわかりません。
jsp - JSP でのステートフル セッション Bean 値の表示
DI を使用して 3 つのサーブレット (3 つの JSP ページにまたがるフォームからデータを取得する) にステートフルセッション Bean を注入し、 3 つのサーブレットすべてが受信したデータを保存できるようにしました。最後のサーブレットで Bean のすべてのデータを印刷すると、正常に印刷されます。
<jsp:useBean>
ただし、タグを使用して JSP で Bean の同じデータを出力しようとすると、scope=session
すべてのデータが null と表示されます。JNDI を使用して InitialContext を使用して Bean を取得しようとしましたが、必要な Bean が見つかりませんでした (おそらく、DI を使用して Bean を注入したためです!)。EJB Bean を に入れてみましたHttpSession
が、 がスローされましたClassCastException
。
ステートフル セッション Bean の値を JSP に出力するにはどうすればよいですか?
java - ステートフル セッション Bean マルチスレッド アクセス
EJB 3.2 仕様には、次のように記載されています。
デフォルトでは、クライアントはステートフル セッション オブジェクトへの同時呼び出しを行うことが許可されており、コンテナーはそのような同時要求をシリアル化する必要があります。コンテナーは、実際のステートフル セッション Bean インスタンスへのマルチスレッド アクセスを決して許可しないことに注意してください。
私には、同時アクセスとマルチスレッド アクセスは同等に思えます。では、複数のスレッドが禁止されているときにステートフル EJB を同時に呼び出すにはどうすればよいのでしょうか。
jakarta-ee - ステートフル セッション Beans CMT
私のタイムゾーンでこんにちは。
EJB 3.0 認定試験の準備をしていて、「EJB3 In Action」という本を読んでいます。BMT トランザクション タイプを使用することの長所と短所のセクションでは、「ステートフル セッション Bean を使用していて、メソッド呼び出し間でトランザクションを維持する必要がある場合、BMT が唯一の選択肢になる」と述べています。この文が理解できません。次の擬似クラスがあると想像してください
すべてのメソッドが REQUIRED transactionAttribute 値を持つことがクラス レベルで定義されているため、method3 が method1 と method2 を呼び出すと、これらのメソッドは method3 を呼び出したときに作成されたトランザクションに参加しますよね?この疑問について私を明確にすることができますか? よろしくお願いします