問題タブ [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 - ステートフルセッションBeanを中断する方法はありますか?
この質問は、スレッドを使用せずにEJB3でタイムアウトを処理することにいくらか関連しています。
背景:実行中にロックする可能性のある操作の例があります。そのような事態に対処し、発生した場合は操作を強制終了できる必要があります。ソリューションはアプリケーションサーバーに依存しない必要があるため、timout値を使用するコンテナー管理トランザクションはオプションではありません。
実際の質問:ステートフルセッションBeanで操作を実行し、外部の@Timeoutメソッドを使用して監視するという解決策のアイデアがありますが、これを機能させるには、そのセッションBeanを中断またはキャンセルできる必要があります。これを行う方法はありますか?
java - ステートフル Web サービスを管理するには?
J2EE と Web サービス (GlassFish 3.1) について学ぼうとしています。この質問は、これのちょっとしたフォローアップです。
ステートレス セッション Bean と Web サービスの使用方法を理解しました。@WebService
メッセージを手作業で解析したくないので、実際には Web サービス ( ) のみを使用しています。できればSOAPよりも軽いものがいいのですが。ただし、ある種の状態を維持したい場合 (ステートフル セッション Bean など) に問題が発生しました。私はこのサイトと他のいくつかのサイトを検索しましたが、バグを見つけるのが難しくなり、スケーラビリティが制限される可能性があるため、これを避けるように勧めています。
「userLogin」メソッドを実行したばかりのユーザーがいて、成功したとします。ユーザーがすでにログインしていることをサーバー上で知るにはどうすればよいでしょうか。@WebService
でのみ有効であるため、ステートフル セッション Bean に追加することによってこれが不可能であることはわかってい@Stateless
ます。
Stateless Session Beans とともに HttpSession (HttpServlet を使用) を使用する場合に状態を格納する方法は知っていますが、適切に生成された SOAP メッセージを使用することはできません。
だから私の質問は、ユーザー状態を維持するというこの問題をどのように解決するか、または状態を必要としないように問題を適応させるかです。
java - EJB3Beanが削除される前に物事が発生することを確認する方法
ステートフルセッションBeanを使用して、顧客に飛行機の座席を予約させたとします。クライアントが明示的に私のRemoveメソッドを呼び出すと、彼のすべての予約がキャンセルされ、その後Beanが削除されます。
ただし、クライアントがしばらくアイドル状態でBeanが不動態化された場合、不動態化中にBeanがタイムアウトすると、関数を呼び出さずにBeanが削除されます。ですから、豆が削除された場合に予約がキャンセルされることを確認する方法を誰かに教えてもらえれば幸いです。@PreDestroyアノテーションを使用すると、この問題は解決しますか?
よろしく、ジェームス・トラン
java - ステートフルセッションBeanは、デシリアライズ後にデフォルト値を取得しません
私はEJB3.1の本(O'Reilly、Andrew Lee Rubinger、Bill Burke)を読んでいましたが、著者は次のように述べています(これらは本の正確な言葉ではなく、これは私自身のテキストの理解です)。
SFSBでは、(不動態化されたプールから出た後)アクティブ化されると、シリアル化されたオブジェクトは、元の標準とは異なり、intが0を返すことは保証されず、オブジェクトがnullを返すことは保証されないなどのデフォルト値を返しません。
私の理解は正しいですか?それが本当なら、なぜEJBがこの振る舞いをするのですか?
http://www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285の元の投稿
java - Java Swing で SwingWorker を使用したステートフル セッション Bean の別のオブジェクト
私は長い操作の進行状況を表示したい Swing にカスタムの進行状況バーパネルを持っています。そこで、2 つの swingworker を作成しました。
- Bean 管理のステートフル セッション Bean (longyTask) で実際に時間のかかる操作を行うもの
- フラグ (statusTask) に基づいてループ内で進行状況を ssb に要求するもの
ssb はブール変数を使用して、終了した場合にフラグを立てます
私の問題は、ssb が最終変数に割り当てられているにもかかわらず、ssb がイベント ディスパッチ スレッドと新しく作成されたスレッドで異なるオブジェクトになることです。statusTask が ssb.isDone() を要求すると、長いタスクがエラーなしで完了したことが確実にわかっていても、false が返されます。
擬似例:
コードはさまざまなオブジェクトを出力します。swing アプリは EJB3 を使用して JBoss 4.2.3 と通信するため、ルックアップは JNDI で行われます。
同様の経験をした人や、スレッドごとにオブジェクトが異なる理由を理解している人はいますか? ご意見ありがとうございます。
java - EJB - ステートフル セッション Bean の JNDI ルックアップ中にシリアル化エラーが発生する
私の EJB プロジェクトには、次のセッション Bean (ステートフル) があります。
インターフェイス StatefulShopCartLocal:
アプリケーション クライアント プロジェクトでルックアップを行うと、次のようになります。
次のエラーが表示されます。
そのセッション Bean のシリアル化に問題があると思いますが、何が間違っているのでしょうか?
ありがとう。
transactions - 同じ SFSB 内でトランザクション メソッドを呼び出す
ステートフル EJB 自体からトランザクション メソッドを呼び出すことはできますか? より明確に話すには:
今私が達成したいのは、ユーザーが myMethod(); を呼び出せるようにすることです。このメソッドが JTA トランザクションなしで実行されることを確認したいと思います。この呼び出しの後、save(); を呼び出したいと思います。トランザクション内で実行されるメソッド。
ctx.getBusinessObject(-) メソッドを使用すると、次のようになります。
警告: EJB MyService メソッド public void com.test.MyService.save() の呼び出し中にシステム例外が発生しました javax.ejb.IllegalLoopbackException:不正な再入可能アクセス: メソッド 'public void com.test.MyService でループバック呼び出しを実行しようとしていますステートフル セッション Bean MyService の .save()
内部呼び出しは SFSB ではサポートされていませんか?
Glassfish 3.1.1 を実行しています。
concurrency - 1人のクライアントがSFSBに同時にアクセスできますか?
ステートフルEJBは、特定のクライアントから同時にアクセスできることを知っています。コンテナはリクエストをシリアル化し、次々に実行します。
問題は、SFSBへの同時アクセスを許可するようにEJBコンテナを設定できますか?
@AccessTimeout
特定のクライアントがSFSBに同時に複数回アクセスできるように構成できるを持っていることを知っています。ただし、同時アクセスをまったく許可しないように指定したり、コンテナーに要求をシリアル化させたりすることができます。
EJB仕様はそのようなことを禁止していますか?を使用してシングルトンEJBとの同時アクセスを実現できることは知っていますが@ConcurrencyManagement
、SFSBに対してそのような動作を許可するように、ベンダー固有の構成プロパティを設定できるかどうかだけが気になります。
前もって感謝します!
java - クライアントが戻ってきたときに、ステートフルセッションBeanはどのようにして状態を回復しますか?
ステートフルセッションBeanが不動態化される場合、その状態はハードディスクに書き込まれ、Beanインスタンスは他の要求を処理するために解放されます(少なくともこれは私の理解です)。同じクライアントが再びアクティブになると、Beanインスタンスはハードディスクから状態を読み取り、状態を回復します。しかし、Beanインスタンスは、状態を維持するためにどのクライアントに対してどのファイルを読み取る必要があるかをどのように知るのでしょうか。
私はJ2EEを初めて使用するので、非常に素朴な疑問を投げかけている場合はご容赦ください。これを理解するために他のトピックを知る必要がある場合は、正しい方向に向けてください。
dependency-injection - EJB 3.1 設計の問題 - MDB からステートフル Bean をインスタンス化する必要がある
最近、EJB3.1 について多くのことを学びましたが、十分ではないようです。これが私の悲惨な物語です...
バッチファイルをアップロードできるサーブレットとの戦いがあります。サーブレットはファイルを検証し、ファイル データをデータベースに保存し、新しいバッチが受信されたことを示すメッセージをキューに送信します。これはすべてうまくいきます。
私は、新しいバッチ受信メッセージをリッスンする MDB を持つ ejb-jar を展開した耳を持っています。
また、実際のバッチ処理を行うステートフル EJB (非インターフェース ビューを使用) も備えています。EJB にはステートレス JPA エンティティ サービス Bean への参照があるため、コンテナに注入された EntityManagers を取得するには、コンテナ管理が必要です。
MDB がメッセージを受信するたびに、ステートフル プロセッサ Bean のインスタンスを作成する必要があります。このシナリオをカバーする例/チュートリアルを見つけることができませんでした。
ステートフル Bean を MDB に注入しようとしましたが、うまくいきません。
MDB は本質的にステートレスであるため、ステートフルな EJB を注入するべきではないため、これはどう見ても悪い設計アプローチです。意味あり。
私の質問は、MDB がメッセージを受信したときにステートフル EJB をインスタンス化し、EJB がコンテナー管理されていることを確認するにはどうすればよいかということです。