java - 使用 OpenEJB 控制无状态 session Bean 的名称

标签 java ejb openejb apache-tomee

我正在使用 OpenEJB (TomEE++) 容器开发一个 EJB 项目。有一个 session 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 绑定(bind)的名称是“global/slides/SlideService”

OpenEJB 似乎正在使用应用程序名称,尽管我没有具体提及它。

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

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

最佳答案

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

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

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

关于java - 使用 OpenEJB 控制无状态 session Bean 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088534/

相关文章:

java - 远程业务接口(interface)的 ejb 引用解析错误 - Glassfish

java - 通过@Resource注入(inject)TimerService时为"Injection data not found in JNDI context"

java - 从 openejb 进行 JAX-RS 2 调用?

java - CSVFormat 在标题中添加引号

java - jar不会被执行

java - EJB 2.0 对象句柄

java - Jboss AS 7 hibernate 配置

java - 为什么servlet-api.jar的状态会从测试状态变成编译状态?

java - Maven:如何处理生成的测试源(仅)?

java - Flex 正则表达式 到 Java 正则表达式