ステートレスBean内のステートフルセッションBeanにアクセスすることは可能ですか?
私の問題は、UserというセッションBeanがあり、ステートレスBean内のユーザー情報にアクセスしたいということです...
私はこのようにしようとしています:
Ejb側:
@Stateless
public class OfferManagerBean implements OfferManagerLocal, OfferManager
{
@Resource
private SessionContext context;
@EJB
private ro.project.ejb.interfaces.User user;
public String getUsername()
{
user = (ro.project.ejb.interfaces.User) context.lookup("java:global/project/projectEJB/User!ro.project.ejb.interfaces.User");
return user.getUsername();
}
クライアント側
User user = (User) ctx.lookup("java:global/project/projectEJB/User!ro.project.ejb.interfaces.User");
user.setUsername("Alex");
OfferManager offerManager = (OfferManager) ctx.lookup("java:global/project/projectEJB/OfferManagerBean!ro.project.ejb.interfaces.OfferManager");
assertEquals(offerManager.getUsername(), "Alex");
このテストケースの結果は次のとおりです。java.lang.AssertionError: expected:<null> but was:<Alex>
失敗します。ステートフルBeanを要求している方法で、新しいインスタンスが返されているようです。
- なぜこれが機能しないのか知っています。私のテストが失敗したので:P。新しいインスタンスを取得します。
- クライアント側でミスをする可能性があるため、クライアント側でカウントしたくないため、EJBにログインしているユーザーの特定のアクセス許可を確認したい。または、他の開発者にプロジェクトのGUIを作成するように指示します。
- RCPアプリケーションにログインする方法がわからないため、JavaEEセキュリティを使用したくない
- 私の主な質問は次のとおりです。EJB内のセッションBean(クライアントが所有しているものと同じ)にアクセスするにはどうすればよいですか。そしてどうやって?
私はこの男が尋ねているのとほぼ同じことを求めています:rmiejb呼び出しでの再利用可能なログインセッションの概念
私はそれをやりたいのですが、JAASではやりません...
前もって感謝します