是否可以在无状态 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。
- 我不想使用 Java EE Security,因为我不知道如何在 RCP 应用程序中进行登录
- 我的主要问题是:如何访问 EJB 中的会话 bean(与客户端相同的).. 可能吗?如何?
我问的几乎和这个人问的一样:Concept for reusable login session in rmi ejb calls
我想这样做,但不是用 JAAS ......
先感谢您