EJB2 xdoclet @ejb.指向自身的会话bean中的Ejb-ref



我现在正在进行从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标签有时可能需要使用这种参考,但我只是找不到它一次。这是真的吗?


@EDIT

在与此类类的作者之一交谈后,我发现当一个bean方法调用第二个方法(可能需要新的事务)时,可以使用对其拥有的类实例的引用。

升级后,它可以替换为如下所示:

@Stateless
public class SomeBean implements IBeanLocal {
    @EJB
    IBeanLocal someBean;
    // class body here
}

我的困惑主要是由于一些不必要的使用这种自我引用。正如Steve C所指出的,可能有人不确定如何使用这个xdoclet特性。

首先,"本地"视图类型暗示您正在查看EJB 2.1代码(而不是2.0)。

我同意@ejb。ejb- reftag很奇怪。只有当它在某处使用JNDI查找相同类型会话bean的另一个实例时,它才有用。即使这样,它也是多余的,因为ejb home对象在bean的EJBContext对象中是可用的。

很有可能原作者不知道ejb-ref是干什么用的。当时有很多这样的事情。

如果有一个ejb-ref指向另一种类型的bean,那么您通常会看到一个相应的@weblogic。Ejb-local-reference-description或@weblogic。ejb-reference-description,用于在weblogic.xml文件中生成JNDI映射信息,由ejb-name链接。

在任何情况下,您都可以用标记为@EJB的实例变量替换这些查找引用。

完整的xdoclet文档(和源代码)仍然可以在(http://xdoclet.sourceforge.net/xdoclet/index.html), FWIW获得。

相关内容

  • 没有找到相关文章

最新更新