問題タブ [stateless-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 - ejb2 ステートレス セッション Bean の同期ブロック
これまでのところ、同期は ejb セッション Bean には推奨されないと聞いています。
同期を使用して解決した問題が 1 つあります。
同期を使用したコード。
synchronized(pinGenerateSessionBean)
ピン生成セッション Bean オブジェクトを同期していた行を確認してください。
それは正常に動作します。その前に、2 つのバッチを同時に生成しようとすると問題が発生しました。
問題はありますか?パフォーマンスは私にとって問題ではありません。
jsf-2 - JSF @ViewScoped @Stateless Bean でトランザクションが開始されない
私は JSF 2@ViewScoped
ベースの Web アプリケーションを持っていますが、トランザクションを正しく処理できません。つまり、トランザクションがまったく開始されません。
Java EE 6 の CDI と EJB3 も使用しています。
メインビーンは次のとおりです。
ビュー スコープ Bean は JSF ページから使用され、データテーブルに単純なリストを表示します。アイテムの追加、アイテムの削除、RichFaces による並べ替え (フィルター処理) を行う AJAX ベースの操作があるため、ビュー スコープになりました。
すべてのメソッド呼び出しに対してトランザクションを開始するように追加しまし@Stateless
た (または、トランザクションが存在しない場合は新しいトランザクションを作成します。デフォルトは ですTransactionAttributeType.REQUIRED
)。このアイデアは、「Core JavaServer Faces, 3rd ed.」という本から引用したものですが、私自身のものと一致する例は見つかりませんでした。
注入された PqService クラス (代わりに使用しても違いはありません@EJB
):
JpaCrudService (基本的に Adam Bien の例http://www.adam-bien.com/roller/abien/entry/generic_crud_service_aka_daoから取得):
JpaCrudService
唯一の違いは、エンティティ内/エンティティに格納されたクエリが好きではないため、サブクラス化することです。そのため、注釈を省略しました@Local
(間違っている場合は修正してください)。@Stateless
私の知る限り継承されておらず、サブクラスを注入するだけなので、それもコメントアウトしました。
つまり、Bean は JSF ページからアクセスされます。
ただし、ページをロードするときに例外が発生します。
pqService.findActivePqsFor()
呼び出しが既存のトランザクションで実行されないため、失敗します(継承TransactionAttributeType.MANDATORY
された AFAIK です)。
TransactionAttributeType.MANDATORY
上のを削除し、拡張エンティティ マネージャを使用すると、トランザクションを使用しなくてもページが正しく表示されることに注意してくださいJpaCrudService
。ただし、これはテスト目的のためのものです。
しかし、なぜこれが機能しないのですか?ここでトランザクションが開始されないのはなぜですか? JSF @ViewScoped
Bean には何かありますか? 非互換?
これをどうやって修理しますか?
PS: JBoss AS 7.1.1 を使用しています。
singleton - EJB-クエリ結果を管理する@Singleton
統計または監視にEJB-@Singleton(javax.ejb.Singleton)を使用する必要がありますか、それとも共通の@ SessionScoped-Beanに統計をキャッシュする方がよいでしょうか?私の質問をクリアするために、ここに2つのシナリオがあります。
シナリオI:
ユーザーはWebセッションを開始し、統計またはデータテーブルを表示するためにデータベースクエリを実行します。これらのクエリは、そのセッション内で実行されます。したがって、10.000ユーザーは10.000の等しいデータベースクエリを作成します。
シナリオII:
ユーザーはWebセッションを開始し、事前に初期化された@Singleton-Beanから統計またはデータテーブルのデータを再試行します。@Singleton(javax.ejb.Singleton)は、Server-Startup(@Startup)の開始時にクエリを実行しました。したがって、10.000ユーザーは1つのキャッシュ(@Singleton)から読み取ることができ、データベースにクエリを実行する必要はありません。私の@Singleton-Beanは、他の誰かがデータを作成/編集/削除した場合に、キャッシュされたデータの更新をトリガーします。
だから私の質問は:
- シナリオIIはシナリオIよりもスケーリングが優れていますか?はい、そうですね。私は正しいですか?
- 他に考慮すべき注意事項や事柄はありますか?
- Stateless-Beansは、@statefulや@Singletonよりもはるかにスケールアウトします。@ Stateless-Beanを使用して、JPA /HibernateCachesなどでクエリをキャッシュすることを検討する必要があります。
- プロキシを使用するには、@ Singleton(javax.ejb.Singleton)の代わりに@ApplicationScoped(javax.enterprise.context)を使用する必要がありますか?それはもっと良いでしょうか?
java - ステートフル セッション Bean とステートレス セッション Bean、インスタンス変数のジレンマ
ステートレス セッション Bean がありますが、何らかのプロセスを実行するために別の Bean への参照を追加したいと考えています。したがって、別の Bean への参照を追加すると、次のようにインスタンス レベル変数に表示されます。
質問
ここで、定義により、ステートレス Bean にはインスタンス レベルの変数を含めることはできません。だから私はこれをどこに置くべきかについてかなり混乱していprivate BillerFacadeRemote billerFacade;
ますか?
java - 別の注入されたクラスでセッション Bean を再利用できますか?
メッセージ駆動型 Bean といくつかのセッション Bean で構成されるアプリケーションがあります。それらの 1 つには、データベースまたは FTP サーバーへのアクセスを担当する DAO オブジェクトがあります。
2つのアプリケーションが必要です。それらの唯一の違いは、DAO クラスのインスタンスです。展開段階でそのインスタンスを指定できますか?
私の目的は、コードの重複を避けることです。
java - ステートレスセッションBeanでの同時実行を回避する方法は?
エンティティ内の数値をインクリメントするSLSBがあります。2つのスレッドが同時にSLSBに到達した場合、両方のリクエストで同じ数を取得しています。
SLSB抽出
エンティティ抽出
問題をテストするために、[BP]
SLSBrecoverNameメソッドでマークされた行にブレークポイントがあります。次に、2つの別々のブラウザページから2つの呼び出しを行います。ブレークポイントでは、値は2つの呼び出しで同じです。
セッターで値を変更しようとしたときに、2番目の呼び出しが何らかの例外をスローするべきではありませんか?
ASとしてJBoss5を使用し、DBとしてMySqlまたはOracleを使用しています(両方で試してみました)
助けてくれてありがとう
java - GlassFishがクライアントリクエストをセッションにマッピングする方法
@Stateful
EJB(3.x)では、Session Beans:および。を選択できます@Stateless
。これらの2つのオプションの背後にある基本を理解している場合:
@Stateful
-各ユーザー/クライアントは独自のものを取得するため、通常はプールされません。複数のリクエストにわたって状態を維持します@Stateless
-リクエスト間の状態を維持しないため、通常はプールされるため、新しいクライアントリクエストごとに新しいBeanが取得されます
ここでの私の中心的な質問は非常に単純ですが、それに接するいくつかのミニ質問があります。私のPOJOデザインはBeanとBeanでどのように異なりますか?@Stateful
@Stateless
つまり、インターフェイスHelloWorld
を実装するBeanがある場合Hello
、そのPOJOのデザインは、ステートフルにするかどうかによってどのように変化しますか?
これに接する:
- アプリコンテナ(私の場合はGlassFish)は、ステートフルであるかどうかに応じて、EJBにどのような異なる制限を課しますか?
- の場合
@Stateful
、同じユーザー/クライアントからのクライアント側のリクエストは、どのようにして正しいBean(前のリクエストからのクライアントの状態を維持しているBean)にマップされますか? - セッションBeanはいつ死にますか?のリクエストが行われた直後だと思います
@Stateless
が、の手がかりはありません@Stateful
。
ここで明確にしてくれてありがとう。
java - Java EE 6:ステートレスセッションBeanからステートフルセッションBeanを呼び出す方法は?
認証モジュールとして機能するステートフルセッションBean(SFSB)があります。SFSBには、ログインしている現在のユーザーを格納します。さらに、エンティティのJPA / SQLを処理するファサード(ステートレスセッションBean(SLSB))がいくつかあります。現在のユーザーのアクセス許可を確認するために、SLSBからSFSBを呼び出そうとします。ただし、SLSBから呼び出された場合、現在のユーザーフィールドは常に「null」です。SFSBを直接呼び出す場合、現在のユーザーフィールドが正しく設定されています...呼び出しには、@EJBアノテーションを使用します。
問題が何であるかについて何か考えはありますか?それはどういうわけか文脈の問題ですか?SLSBからSFSBを呼び出して、その状態を維持することは一般的に可能ですか?
よろしくお願いします!
web-services - WebサービスをステートレスセッションBeanとして公開することによるスレッドセーフの利点はありますか?
WebサービスをステートレスセッションBeanとして公開することのスレッドセーフ関連の利点はありますか?
(間違っている場合は訂正してください)しかし、Webサービスはスレッドセーフではなく、サーブレットのように、サーバーによって作成されるWebサービスクラスのインスタンスは1つだけです(リクエストごとに1つのインスタンスではありません)。
ステートレスBeanのようなBeanのプールから割り当てられているかどうかは、アプリサーバーによってわかりません。すでに@WebServiceアノテーションが付けられているWebサービスで@Statelessアノテーションを使用するかどうかを調べようとしています。これにより、アプリサーバーは着信リクエストごとにプールからのアノテーションを開始します。そうすれば、着信リクエストごとに1つの個別のインスタンスが作成されることが確実にわかりますか?
serialization - EJB。var List を使用してセッション Bean を呼び出すと、次の javax.ejb.EJBException: java.rmi.MarshalException がスローされます。
Netbeans で Java Web プロジェクトを作成し、エンティティ Bean を作成し、後でプロジェクトを展開してデータベースを生成しました。この作業は成功しました。
次に、作成したデータベースにアクセスするためのセッション Bean を生成しました。セッション Bean をテストするためのメイン クラスを作成しました。セッション Bean インターフェイスを介して呼び出すメソッド「find」をテストしたところ、いくつかのクラスが例外をスローすることに気付きました。シリアル化できなかったかのように例外が発生します。
持ってきてほしい エンティティのリストはリクエストです。
Web アプリケーションで、私のセッション Bean を持つ同じプロジェクトにエンティティ Bean があります...
Glass Fish 3.1.2
Netbeans 7.1.2
EclipseLink 2.0 で作業しました
エンティティの永続性は次のとおりです。
主なクラスは次のとおりです。
GetBean はユーティリティ クラスです。
}
ピアシスタンス ユニット:
例外は次のとおりです。