加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java EE 6:如何从无状态会话Bean调用有状态会话Bean?

发布时间:2020-12-15 00:43:23 所属栏目:Java 来源:网络整理
导读:我有一个有状态会话Bean(SFSB),它充当身份验证模块.在SFSB中,我存储了当前登录的用户.此外,我还有一些外观(无状态会话Bean(SLSB))处理我的实体的JPA / SQL内容.为了检查当前用户的访问权限,我尝试从SLSB中调用SFSB.但是当从SLSB调用时,当前用户字段始终为“n
我有一个有状态会话Bean(SFSB),它充当身份验证模块.在SFSB中,我存储了当前登录的用户.此外,我还有一些外观(无状态会话Bean(SLSB))处理我的实体的JPA / SQL内容.为了检查当前用户的访问权限,我尝试从SLSB中调用SFSB.但是当从SLSB调用时,当前用户字段始终为“null”.直接调用SFSB时,正确设置当前用户字段…为了调用我使用@EJB注释.

任何想法可能是什么问题?这是某种上下文问题吗?通常是否可以从SLSB调用SFSB来保留它的状态?

提前谢谢了!

解决方法

您不应该从无状态会话bean调用有状态会话bean.

这是一些阅读:JEE6 Tutorial – Session Beans

无状态bean对您的会话一无所知.无论何时你打电话,它都是无国籍的.然后它调用有状态会话bean.毫不奇怪,它没有任何与客户端会话状态相关的上下文,因为它是从无状态对象调用的.

我不知道它是否会起作用,但你可能会尝试通过使用@EJB表示法进行JNDI查找而不是DI来获取上下文.无状态ejb中的这样的东西可能会起作用.你可能不得不玩它,我无法保证任何东西.它应该获取客户端调用无状态ejb的上下文.客户端需要具有会话上下文/范围或忘记它.

@Resource SessionContext sessionContext;

MyStatefulBean msb = (MyStatefulBean)sessionContext.lookup("ejb/MyStatefulBean");
msb.doSomething(fubar);

最好从具有会话范围的客户端或另一个有状态ejb调用有状态会话bean.无国籍和有状态的人有不同的理由.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读