Java 会话bean中指向自身的EJB2 xdoclet@ejb.ejb-ref
我现在正在研究从EJB2.0到3.0的迁移。 旧会话bean使用XDoclet来配置一些东西 我几乎能理解所有这些,但有一件事困扰着我。 为什么有人会像下面的代码那样使用@ejb.ejb-refJava 会话bean中指向自身的EJB2 xdoclet@ejb.ejb-ref,java,ejb-3.0,ejb-2.x,xdoclet,Java,Ejb 3.0,Ejb 2.x,Xdoclet,我现在正在研究从EJB2.0到3.0的迁移。 旧会话bean使用XDoclet来配置一些东西 我几乎能理解所有这些,但有一件事困扰着我。 为什么有人会像下面的代码那样使用@ejb.ejb-ref /** * @ejb:bean name="SomeBean" * local-jndi-name="com/my/jndi/SomeBean" * view-type="local" type="Stateless" * * @ejb.ejb-ref ejb-name=
/**
* @ejb:bean name="SomeBean"
* local-jndi-name="com/my/jndi/SomeBean"
* view-type="local" type="Stateless"
*
* @ejb.ejb-ref ejb-name="SomeBean"
* view-type="local"
*
* ..some more stuff here
*/
public class SomeBean implements SessionBean {
// class body here
}
这个xdoclet中没有更多的@标记,包括一些用于配置weblogic@weblogic的标记
我们是否有理由要添加对bean本身的引用?
第二个问题,ejb3中是否仍然需要此配置
我有一种感觉,我在某个地方读到,@weblogic标签有时可能需要使用这种引用,但我再也找不到了。这是真的吗
@编辑
在与这些类的作者之一交谈之后,我发现当一个bean方法调用第二个方法时,可能会使用这种自引用,而第二个方法可能需要通过引用它所拥有的类的实例来进行新的事务
升级后,它可以替换为下面这样的内容
@Stateless
public class SomeBean implements IBeanLocal {
@EJB
IBeanLocal someBean;
// class body here
}
我的困惑主要是由于不必要地使用了这种自我参照。
正如Steve C所指出的,可能有人不知道如何使用这个xdoclet特性。首先,本地视图类型意味着您正在查看EJB2.1代码,而不是2.0 我同意@ejb.ejb-ref标记很奇怪。它只有在某处使用JNDI来查找同一类型会话bean的另一个实例时才有用。即使这样,它也是多余的,因为ejb主对象在bean的EJBContext对象中可用 很可能最初的作者不知道ejb引用的用途。当时有很多这样的事情发生 如果存在对另一种bean类型的ejb引用,那么您通常会看到一个对应的or,用于在weblogic.xml文件中生成JNDI映射信息,该文件由ejb名称链接 在任何情况下,都可以使用标记为的实例变量替换这些查找引用
完整的xdoclet文档和源代码仍然可以在FWIW上找到。最终,我可能会设法找到这门课的作者,问他,他是什么意思。无论如何,谢谢你的帮助。