使用OpenEJB控制无状态会话Bean的名称

时间:2012-04-10 12:10:15

标签: java ejb openejb apache-tomee

我正在使用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名称的正确方法,还是有其他(更好)方法?

1 个答案:

答案 0 :(得分:2)

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

的文档

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

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