問題タブ [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.

0 投票する
1 に答える
1562 参照

java - Java EE NameNotFoundException;

Java EE Web アプリケーションから次のインジェクション/JNDI ルックアップ エラーが発生します。

ここに貼り付けるコードがわからないので、お知らせください。ありがとうございます。

これが私のweb.xmlです:

これは、ejb をインスタンス化する私のアクション クラスです。

ここに私の OPRSystem クラスがあります:

これが私のプロジェクト構造です:

ここに画像の説明を入力

0 投票する
2 に答える
1860 参照

java - クライアント間で複製されるステートフル EJB と同じセッション

現在のユーザー情報をアプリケーション内に保持するために使用しているステートフル EJB があります。この EJB はサーブレット コントローラーに挿入され、最後にログインしたユーザーを格納するために使用されます。ただし、セッションはすべてのクライアントで同じように見えます。

サンプル EJB コード:

サンプル サーブレット コード:

ここで、アプリケーションがサーバーにデプロイされ、さまざまなクライアントからさまざまな人がサーバーに話しかけている場合、ユーザー名は常に最後にログインしたユーザーに設定されます。つまり、ステートフル セッション Bean のように見えます。すべてのクライアントで同じ状態を維持しています。Java 6 eeチュートリアルで247ページからの次の引用を読んだので、これは私を大いに混乱させました。

ステートフル セッション Bean では、インスタンス変数は一意のクライアント/Bean セッションの状態を表します。クライアントはその Bean と対話 (「対話」) するため、この状態は多くの場合、会話状態と呼ばれます。その名前が示すように、セッション Bean はインタラクティブ セッションに似ています。セッション Bean は共有されません。インタラクティブ セッションが 1 人のユーザーしか持てないのと同じように、クライアントは 1 つしか持てません。クライアントが終了すると、そのセッション Bean は終了したように見え、クライアントに関連付けられなくなります。

誰かがなぜこれが発生しているのかを説明し、すべてのクライアントで同じ状態を維持しない適切な方法でステートフル Bean を使用する方法を説明できますか?

ありがとうございました。

0 投票する
1 に答える
3502 参照

servlets - EJB の問題 - ステートフル セッション Bean とサーブレット

次のように、ejb ステートフル セッション Bean コードを呼び出すサーブレット コードがあります。

このコードは、* マークの間に線がなくてもうまく機能します。ただし、SessionBeanSFRemote sessionBeanSF = lookupSessionBeanSFRemote()この行を追加すると (ステートフル セッション Bean を呼び出すことを意味します)、コードでエラーが発生します。実際には、何らかのジョブを実行するためにステートレス セッション Bean を呼び出す必要があります。なぜそれが起こっているのか誰でも私を助けることができますか? 前もって感謝します。

エラーメッセージは次のとおりです。

タイプ例外報告メッセージ

例外

根本的な原因

根本的な原因

根本的な原因

根本的な原因

根本的な原因

根本的な原因

サーバー: GlassFish サーバー オープン ソース エディション 3.0.1

0 投票する
3 に答える
476 参照

jakarta-ee - ステートフルセッションBean-ステートロスの問題

ステートフルセッションBeanコードを呼び出し、そのint値をインクリメントするサーブレットコードがあります。しかし、次回サーブレットとそれに対応するBeanを呼び出すと、Beanはその状態を失い、再びインクリメントの開始から開始します。誰かがこの問題を解決する方法を教えてもらえますか?私のコードは以下の通りです:

0 投票する
1 に答える
3443 参照

jsf-2 - CDIマネージドBeanとステートフルセッションBeanを使用したLazyInitializationException

ステートフルセッションBeanが挿入されたCDIマネージドBean(JSFで使用される@Namedで注釈が付けられたBean)があります。このセッションBeanはサービスのようなもので、エンティティマネージャ(@PersistenceContext(type = PersistenceContextType.EXTENDED)で注釈が付けられています)を持ち、一部のエンティティを操作するためのメソッドを公開します。これらのエンティティは、ConversationScopedであるマネージドBean上にあります。次に、JSFはマネージドBeanのメソッドを呼び出し、マネージドBeanは「サービス」(ステートフルセッションBean)のメソッドを呼び出します。これが最高のデザインかどうかはわかりませんが、うまく機能していました。ただし、LAZYでフェッチする必要のあるコレクションがいくつかあるエンティティがあります。また、最初にページを開いたときは正常に機能しているように見えますが、ボタンをクリックしたり、アクションを実行したりすると、LazyInitializationExceptionが発生します。誰かに何かアドバイスはありますか?何かおかしいのかわかりません。セッションBeanをステートフルのように配置し、永続コンテキストを拡張しました。このセッションBeanは、エンティティを持つ管理対象Bean内に注入されます。なぜこの例外をスローするのですか?エンティティマネージャーをどのように閉鎖できますか?

これは、問題が発生しているエンティティのコードです。

これはステートフルセッションBeanです。

管理対象Beanは、セッションBeanのメソッドgetParametrosVingentes()を呼び出します。ParametrosUtilの静的メソッドを使用して、ParametrosVingentesを取得(存在する場合)または作成(存在しない場合)します。これは、アプリケーションにParametrosVingentesが1つだけ存在する必要があるためです。他のコンポーネントで使用されるパラメーターを持つのはBeanです。これはParametrosUtilのコードです:

これはマネージドBeanです。

そしてこれはJSFです:

ご覧のとおり、LAZYでフェッチする必要のあるコレクションにバインドされたフィールドがあります。

そしてこれはスタックトレースです:

サービスのgetParametrosVingentesメソッドの最後で、EntityManagerがクリアされ、すべてのエンティティが切り離されていると思います。それが問題でしょうか?

これは、Mojarra2.1.2とEJB3.1を使用してGlassfish3で実行しています。助けてくれてありがとう。

0 投票する
3 に答える
8588 参照

quartz-scheduler - Quartz ジョブから EJB にアクセスする方法

さて、Quartz を使用して、アプリケーションで必要ないくつかのジョブをスケジュールしています。しかし、ジョブでステートフル SessionBean にアクセスする方法が必要です。@EJBで注入できないことはわかっていました。誰でも私を助けることができますか?ありがとう。

0 投票する
4 に答える
4871 参照

jakarta-ee - ステートレス、javaee6内のステートフルな既存のインスタンスにアクセスする

ステートレスBean内のステートフルセッションBeanにアクセスすることは可能ですか?

私の問題は、UserというセッションBeanがあり、ステートレスBean内のユーザー情報にアクセスしたいということです...

私はこのようにしようとしています:

Ejb側:

クライアント側

このテストケースの結果は次のとおりです。java.lang.AssertionError: expected:<null> but was:<Alex>

失敗します。ステートフルBeanを要求している方法で、新しいインスタンスが返されているようです。

  1. なぜこれが機能しないのか知っています。私のテストが失敗したので:P。新しいインスタンスを取得します。
  2. クライアント側でミスをする可能性があるため、クライアント側でカウントしたくないため、EJBにログインしているユーザーの特定のアクセス許可を確認したい。または、他の開発者にプロジェクトのGUIを作成するように指示します。
  3. RCPアプリケーションにログインする方法がわからないため、JavaEEセキュリティを使用したくない
  4. 私の主な質問は次のとおりです。EJB内のセッションBean(クライアントが所有しているものと同じ)にアクセスするにはどうすればよいですか。そしてどうやって?

私はこの男が尋ねているのとほぼ同じことを求めています:rmiejb呼び出しでの再利用可能なログインセッションの概念

私はそれをやりたいのですが、JAASではやりません...

前もって感謝します

0 投票する
2 に答える
1872 参照

java - ステートフル セッション Bean にアクセスする EJB NameNotFoundException

ステートフル セッション Bean を使用してショッピング バスケットを作成しています。Bean へのアクセスに問題があり、次のエラーが表示されます

問題はルックアップにあると思います

ルックアップ文字列に何を入力すればよいか正確にはわかりません

BasketBeanRemoteはというパッケージにejb.remoteありBasketBeanejb.beans私のejbプロジェクトにあります

ルックアップには何を入れる必要がありますか? 私は戦争プロジェクトからアクセスしています。

0 投票する
1 に答える
327 参照

jsf-2 - Glassfish で余分な SFSB が作成され、メモリ リークが発生する

Glassfish 3.1.1 で、単一の SFSB を ViewScoped JSF バッキング Bean に注入しようとしています。

私のログはこれを示しています.2つのSFSBが作成されています.

その後、別の場所に移動して ViewScoped Bean が範囲外になったときに、SFSB で remove() を呼び出すと、ログに次のように表示されます。

しかし、@ f48cde0 で終わる余分な最初のものは決して注入されなかったので、私はそれに対するハンドルを持っておらず、削除されることはありません。後でサーバーをシャットダウンすると、サーバーが削除されていることがわかります。

これが私のコードです:

バッキング Bean:

SFSB インターフェース:

SFSB の実装:

最後に、jsf ページ:

これは非常に単純な設定です...一体何ができるのでしょうか? おそらくGlassfishのバグ?

編集: 私が報告していることの真実性についての「疑い」を和らげるために、ページを10回ロードしたときのログを次に示します。毎回 2 つずつ作成された 20 個の SFSB に注意してください。

そして最後に、アプリをアンロードすると、10 個の余分な SFSB が最終的に破棄されることに注意してください。

同じパターンで 200 の Bean を引き起こす 100 のヒットに対して動作が保持されるという私の評判に基づいて、私の言葉を信じてください。

0 投票する
1 に答える
99 参照

ejb - EJB 仕様 3.1 ステートフルな変換状態

私は新しいです。

EJB 3.1 仕様 (セクション 4.2) の次のステップがわかりません。

ステートフル セッション オブジェクトの会話状態は、セッション Bean インスタンスのフィールド値、関連するインターセプター、およびそれらのインスタンス フィールド値に加えて、次の Java オブジェクト参照によって到達するこれらのインスタンスのフィールドからのオブジェクトの推移的なクロージャーとして定義されます。

どなたか、広告の例を見せていただけませんか?

前もって感謝します

マウロ