【问题标题】:Controlling the name of a stateless session bean with OpenEJB使用 OpenEJB 控制无状态会话 bean 的名称
【发布时间】:2012-04-10 12:10:15
【问题描述】:

我正在开发一个带有 OpenEJB (TomEE++) 容器的 EJB 项目。有一个会话 bean,其 JNDI 查找名称需要在代码中进行控制。

@Stateless(mappedName="SlideService", name="SlideService")
public class SlideService {

    public Map<Category, List<SlideShow>> fetchSlideShowsBycategory() {
        // TODO Auto-generated method stub
        return null;
    }

    public SlideShow fetchSlideShow(long id) {
        // TODO Auto-generated method stub
        return null;
    }

    public List<SlideShow> fetchSlideShowsByTitle(String title) {
        // TODO Auto-generated method stub
        return null;
    }
}

我的问题是,这个 bean 绑定的名称是 'global/slides/SlideService'

OpenEJB 似乎正在使用应用程序名称,尽管我没有特别提到它。

这会损害便携性吗?是否有可能其他容器可能不使用应用程序名称?

使用 name 和 mappedName 属性是控制无状态 bean 名称的正确方法,还是有其他(更好的)方法?

【问题讨论】:

    标签: java ejb openejb apache-tomee


    【解决方案1】:

    您的问题在 EJB 3.1 规范中得到解决,任何经过 Java EE 6 认证的容器都将为您的 bean 使用多个 JNDI 名称。 在你的代码中你可以控制名字的最后一部分,这里有一个关于Portable Global JNDI Names的文档

    在这里您可以找到 JNDI Portable JNDI names in EJB 3.1 3 个标准范围的简单指南

    是的,您的代码可以在任何 Java EE 6 认证容器中移植

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2011-03-31
      • 2011-01-02
      • 2014-06-23
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多