0

我正在尝试找出一个陈旧且相当陈旧的 EJB 2.0 应用程序,未来可能会迁移到 EJB 3.x。

EJB 3.x 足以保持其 bean 定义紧凑,并为重要的元数据使用注释。不幸的是,EJB 2.x 肯定更复杂,多个 XML 文件相互堆积。添加一些特定于 JBoss 的方法调用和相应的 XML 文件,结果是一团糟……

所以,从基础开始:

如何可靠地区分有状态和无状态 EJB 2.0 bean?

4

1 回答 1

1

一个重要的信息是ejb-jar.xml文件的内容。它可能包含明确的元素 wrt bean 是否有状态。

对于有状态 bean:

<session>
   ...
   <ejb-name>TestBean</ejb-name>
   ...
   <ejb-class>com.example.TestBean</ejb-class>
   <session-type>Stateful</session-type>
   ...
</session>

对于无状态 bean:

<session>
   ...
   <ejb-name>TestBean</ejb-name>
   ...
   <ejb-class>com.example.TestBean</ejb-class>
   <session-type>Stateless</session-type>
   ...
</session>

其他重要的迹象可以在 bean 实现中找到。根据 EJB 2.0 规范,第 7.5.3 节:

无状态会话 bean不得实现 SessionSynchronization 接口。

从第 7.8 节开始,关于无状态 bean:

会话 bean 类必须定义一个不带参数的单一 ejbCreate 方法。

于 2012-08-12T21:42:55.253 回答