我们有几个带有Request,View和Session Scope的JSF托管bean,并且正在运行WebLogic 11g(10.3.2).Weblogic的不支持Managed Bean的一个JSF的@EJB注解,所以我们使用这些程序http://technology.amis.nl/2008/12/06/ejb-dependency-injection-of-session-bean-facade- in-jsf-12-on-weblogic-103-jsf-with-jpa /创建一个ServletConextListener,使用@EJB注释加载EJB引用.
实际上,从JSF Managed Bean中,我们可以通过从ServletContext获取它来查找我们希望使用的EJB的EJB接口.
所以问题是:
1)将EJB接口作为ManagedBean上的实例变量是否可以?(理由是在页面循环期间多次调用EJB)
2)如果我们确实将它们作为实例变量,我们是否应该将EJB接口实例变量标记为瞬态变量?
1)将EJB接口作为ManagedBean上的实例变量是否可以?(理由是在页面循环期间多次调用EJB)
这是正常的设计,是的.它与使用时没有什么不同@EJB.无论如何,返回的EJB实例都是代理.代理将反过来担心将方法调用委托给容器的EJB池中适当且可用的具体EJB实例.
您唯一关心的可能是@Stateless相@Stateful对于JSF托管bean范围而言.您需要真正了解每个EJB会话的含义.该@Stateless还可以将您在每次调用一个随机的实例.@Stateful只要客户端(在这种特殊情况下,JSF托管bean实例)存在,就会为您提供相同的实例.可以在这里找到更深入的解释:JSF请求作用域bean继续在每个请求上重新创建新的有状态会话bean吗?
2)如果我们确实将它们作为实例变量,我们是否应该将EJB接口实例变量标记为瞬态变量?
不需要.默认情况下,EJB代理已经可序列化.
| 归档时间: |
|
| 查看次数: |
2775 次 |
| 最近记录: |