gpt4 book ai didi

jsf - EJB 是否应该是实例变量并在 JSF Managed Beans 中标记为 transient ?

转载 作者:行者123 更新时间:2023-12-02 08:49:12 25 4
gpt4 key购买 nike

我们有几个带有请求、 View 和 session 范围的 JSF 托管 bean,并且正在运行 WebLogic 11g (10.3.2)。 Weblogic 不支持 JSF 托管 Bean 中的 @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 接口(interface)。

所以问题是:

1) 可以将 EJB 接口(interface)作为 ManagedBean 上的实例变量吗? (理由是EJB在一个页面周期内被多次调用)

2) 如果我们确实使它们成为实例变量,我们是否应该将 EJB 接口(interface)实例变量标记为 transient ?

最佳答案

1) Is it OK to make an EJB interface an instance variable on a ManagedBean? (the rationale is that the EJB is called many times during a page cycle)

这是正常的设计,是的。这与使用 @EJB 时没有什么不同。返回的 EJB 实例是 proxy反正。代理将反过来担心将方法调用委托(delegate)给容器的 EJB 池中适当且可用的具体 EJB 实例。

您唯一关心的可能是 @Stateless@Stateful 相对于 JSF 托管 bean 范围而言。您需要真正理解每个 EJB session 代表什么。 @Stateless 可能会在每次调用时返回一个随机实例。 @Stateful 为您提供与客户端(在本例中为 JSF 托管 bean 实例)存在期间相同的实例。可以在此处找到更深入的解释:JSF request scoped bean keeps recreating new Stateful session beans on every request?


2) if we do make them instance variables, should we mark the EJB Interfaces instance variables as transient?

不需要。 EJB 代理默认情况下已经是可序列化的。

关于jsf - EJB 是否应该是实例变量并在 JSF Managed Beans 中标记为 transient ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com