1

次のようにログインシナリオを処理したい:

  1. クライアントは Stateless Java Bean (SLJB) に接続し、ログインを試みます。
  2. ログインが成功すると、SLJB はステートフル Java Bean (SFJB) をユーザーに返すため、クライアントは引き続きアプリケーションを使用できます。

私は現在、次のように2番目のステップを実行しています:

return new StatefulBean(some params);

これは正しい方法ですか?例外が発生するので、私には思えません:

Class org.eclipse.persistence.internal.jpa.EntityManagerImpl is not Serializable

私のアプリケーションを実行しているときに、説明されている方法に関連していると思います。

SLJB からクライアントに SFJB への参照を返す正しい方法は何ですか?

4

2 に答える 2

3

まず第一に、これは完全に間違っています:

new StatefulBean(some params)

EJB コンテナーは、Bean のインスタンスの作成と破棄を担当します。手動で作成しないでください。

あなたのシナリオでは、フローを逆にします。クライアントは、ヘルパーとしてステートレス セッション Bean の可能性があるステートフル Bean に接続します。Bean を渡す必要はありません。クライアントは常に同じ Bean を使用します。

于 2012-04-27T18:24:14.250 に答える
1

Tomasz が言及しているように、おそらくフローを再考する必要があります。

つまり、起動時に各 Bean に割り当てた移植可能な JNDI 名を使用して、JNDI ルックアップを実行することで、新しいステートフル インスタンスを取得できます。

于 2012-04-27T20:10:54.173 に答える