我试图弄清楚一个旧的,有点腐烂的EJB 2.0应用程序,迁移到EJB 3.x是未来的可能性。
EJB 3.x非常适合保持其bean定义紧凑并对重要元数据使用注释。不幸的是,EJB 2.x肯定更复杂,有几个XML文件相互堆叠。添加一些JBoss特定的方法调用和相应的XML文件,结果很乱......
所以,从基础开始:
如何才能可靠地告诉有状态和无状态的EJB 2.0 bean?
答案 0 :(得分:1)
一条重要的信息是ejb-jar.xml
文件的内容。它可能包含明确的元素w.r.t.豆是有状态的还是没有。
对于有状态的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方法。