問題タブ [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 - @Stateful および @SessionScoped
理解できない Bean ライフサイクルについて問題があります。戦争に @SessionScoped Bean があります。
次に、ejb 部分の @Staseful セッション Bean:
それらはうまく機能しますが、未チェックの例外が ejb 部分で生成されると、SFSB は「停止」します。予想される動作であることは理解していますが、この状況を管理する方法がわかりません。例: ユーザーが xls ファイルをアップロードできるページに移動し、ファイルをアップロードすると、奇妙な理由でファイルの処理が失敗します。「WeirdReasonException」がキャッチされず、SFSB が消え、後続のすべての呼び出しで「javax.ejb.NoSuchObjectLocalException: The EJB does not exist」が生成されます。例外をキャッチしないままにすることは避けなければならないことはわかっていますが、何か奇妙なことが起こった場合、ユーザーは自分の作業を続行できるはずだと思います。SFSB の再作成を「強制」する方法はありますか?
ありがとうございました
jakarta-ee - コンテキストで @EJB を取得する
ここで説明したように、ステートフル セッション Bean の同じインスタンスを取得するために、サーブレットからリダイレクトされた jsp でユーザー名を表示します。関連する HttpSession に保存する必要があります。それはうまくいっていますが、サーブレットで私はそうしました:
属性「カート」は、初期化されたカートを保存した場所です。問題は、カートが以前に初期化されていない場合、行 cart=new SessionCart(); があることです。Context に関連しない Bean を初期化するため、@PercistenceContext によって取得されるエンティティーマネージャーは null になります。アノテーションを使ってみた
しかし、これは私の制御なしで新しいセッションカートを作成します(したがって、ユーザーに関連するカートがまだある場合は、新しいカートを作成して破棄します...これはあまり良くありません)。私の質問は、アノテーション @EJB を使用せずに新しいステートフル セッション Bean を作成し、それをコンテキストに関連付けることはできますか? いつ作成するかを制御できます
java - WebService-Client-Access を @Stateful にマッピングする
私がそれを正しく理解していれば、 @Stateful Bean が状態を保存します。クライアントが再度リクエストを行うと、同じインスタンスに戻ります。したがって、@Stateless では不可能なクラス属性を保存することができます。ここの別のスレッドで、誰かが「これは従来の Java インスタンスのようなもので、すべてのインジェクションがこの Bean の独自のインスタンスを取得します」と書いています。
しかし、 @Stateful Bean へのリクエストのマッピングがどのように機能するのかわかりません。機能するにはどうすればよいですか? この質問は、次の 2 つのケースに当てはまります。
- クライアント ソフトウェアの Web サービスで @Stateful を呼び出します。それは私がそれと一緒に送らなければならないIDですか?しかし、ID とは何であり、コンテナーはこれが識別属性であることをどのように認識し、正しい @Stateful Bean にルーティングするのでしょうか?
- @Stateless Bean から @Stateful を呼び出します。例として、クライアントが最初に @Stateless Bean を呼び出し、@Stateful Bean にリダイレクトする場合。
この質問は、コンテナ/サーバー ソフトウェアの技術的なプロセスに関するものではなく、開発時の具体的な作業に関するものです。ご支援いただきありがとうございます。
ご挨拶
java - ステートフル セッション Bean のパッシベーションとシリアル化 - EJB
次の質問が頭に浮かびます
1) どこかで読みました:
パッシベーション: ステートフル Bean のスケーラビリティの可能性
ここでスケーラビリティとはどういう意味ですか?
2) ステートレス セッション Bean は、ステートフル セッション Bean よりもどのようにスケーラブルですか?
3) として
パッシベーションの場合、ステートフル セッション Bean がシリアル化され、アクティブ化の場合、コンテナーによって逆シリアル化されます ...
なぜシリアライゼーションとデシリアライゼーションが必要なのですか?シリアライゼーションとデシリアライゼーションなしではそれ(パッシベーションとアクティベーション)を行うことはできませんか? そして、シリアライゼーションがコンテナーが Bean をパッシベートするのにどのように役立つのですか??
jakarta-ee - ステートフル EJB での @Remove メソッドの目的
アノテーション付きメソッドを呼び出すと@Remove
、クライアントがステートフル EJB のインスタンスをもう必要とせず、呼び出し後に削除できることを EJB コンテナーに通知することを理解しています。
ただし、Oracle JEE チュートリアルでは、このメソッドを使用してインスタンスを「クリーン」にします。たとえば、ここを参照してください。
( https://docs.oracle.com/javaee/6/tutorial/doc/bnbod.htmlより)
メンバーList<String> contents;
はに設定されてnull
いますが、これを行う理由がわかりません。インスタンスが削除された場合、これらの種類の参照はすべて削除されませんか?
インスタンスが解放されたときにいくつかのビジネス タスクを実行する必要があると想像できますが、メソッドの呼び出し後は、それらのタスクを実行できる@Remove
いくつかのメソッドを多かれ少なかれ直接呼び出します。@PreDestroy
では、なぜ@Remove
sth like だけでなく、メソッドにこの特別なメカニズムがあるのでしょうか。EJBContainer.remove(myBean)
アノテーションの目的を明確にしてください@Remove
。また、このメカニズムが必要な理由が明らかなわかりやすいユースケースの例をいくつか挙げていただけますか?
java - Spring ステートフル Bean と同等 - 同期コールバック メソッド
ステートフル セッション Bean (EJB 2.1) を Spring Bean に移行したいと考えています。ステートフル Bean と Spring Bean の両方が、Websphere Transaction Manager を使用して Websphere Application Server で実行されます (WebsphereUowTransactionManager
インターフェイスにより、Spring はそれにアクセスできます)。
古いステートフル セッション BeanSessionSynchronization
は、コールバック メソッド (具体的にはコールバック) を利用するためのインターフェイスを実装しますafterCompletion
。
私の知る限り、これはステートフル Bean をエミュレートし、 Spring が提供するTransansactionSynchronizationインターフェースを実装するため、Bean のプロトタイプ スコープを使用してみました。
後で理解したように、これらのコールバックを呼び出すことはできません。「他のスコープとは対照的に、Spring はプロトタイプ Bean の完全なライフサイクルを管理しません。コンテナはプロトタイプ オブジェクトをインスタンス化し、構成し、その他の方法でアセンブルし、それをクライアント、そのプロトタイプインスタンスのそれ以上の記録なし" http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-prototype
セッション スコープは解決策になる可能性がありますが、セッション Bean は、JMS キューからのメッセージを消費するメッセージ駆動型 Pojo から呼び出されます。
編集: 古いセッション Bean は、キューなどへのさまざまな書き込みを実装する純粋な Java クラスの「ラッパー」にすぎません。したがって、既存のクラスを取得して、そこから Bean を作成し、SessionSynchronization を実装します。
私のアイデアは、同じ Java クラスを使用して Spring Bean (インターフェースおよび実装クラス) を作成することでした。
spring-mvc - MockMVC テスト コントローラーをセッション スコープの Bean と統合する
コントローラーに注入されるSpringセッションスコープのBeanを使用するSpring Controllerメソッドを統合テストしようとしています。テストに合格するには、このコントローラ メソッドへのモック呼び出しを行う前に、セッション Bean にアクセスして値を設定できる必要があります。問題は、モック アプリケーション コンテキストからプルしたセッション Bean を使用する代わりに、呼び出しを行うと、新しいセッション Bean が作成されることです。コントローラーで同じ UserSession Bean を使用するにはどうすればよいですか?
ここに私のテストケースがあります
ここに、テストが必要なコントローラーメソッドがあります
UserSession オブジェクトが同じではないため、この行を渡しません if(userSession.isEmployee() && userSession.getAuthorizationLevel() >= 3){
これは、私のユーザー セッション Bean の宣言です。
controlle と Bean の両方が、私の applicationContext.xml でコンポーネント スキャンを使用して作成されます。
ejb - ブラウザを閉じた後、ステートフル Bean にアクセスできますか?
ステートレスおよびステートフル セッション Bean についてサポートが必要です。いくつか質問があります。
- ステートレス セッション Bean とステートフル セッション Bean の違いを明確に教えてください。
- ステートフル Bean はクライアントに関する情報を保持していると言う人もいます。ステートフル Bean はどのような情報を保持しますか?
- EJB (ステートレスおよびステートフル セッション Bean) を含む Web プロジェクトがあるとします。ブラウザを完全に閉じた場合、同じ Stateful Session Bean インスタンスに再びアクセスできますか?
回答ありがとうございます。:)
java - シングルトン セッション Bean をステートレス セッション Bean に注入する
ステートレス セッション Bean 内でシングルトン セッション Bean を使用して、アプリケーションで共有情報を保持することは許可されていますか (そして良い方法ですか?)
SSB は SLSB に注入されます。
-