我现在正在从 EJB 2.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="SomeBean"
* view-type="local"
*
* ..some more stuff here
*/
public class SomeBean implements SessionBean {
// class body here
}
这个 xdoclet 中还有一些其他内容@tags
,包括一些用于配置 weblogic ( @weblogic
) 的内容。
是否有某些原因我们可能想要添加对 bean 本身的引用?第二个问题,ejb3 还需要这个配置吗?
我有一种感觉,我在某处读到这个@weblogic
标签有时可能需要使用这种参考,但我再也找不到它了。这是真的吗?
@编辑
在与此类类的一位作者交谈后,我发现当 bean 方法之一通过使用对其拥有的类实例的引用来调用第二种方法(可能需要新事务)时,可以使用这种自引用。
升级后可以用下面这样的东西代替。
@Stateless
public class SomeBean implements IBeanLocal {
@EJB
IBeanLocal someBean;
// class body here
}
我的困惑主要是由于对这种自我参照的一些不必要的使用造成的。正如 Steve C 所指出的,可能有人不确定如何使用这个 xdoclet 功能。