我需要在独立应用程序中使用JPA,因此我找到了示例http://tomee.apache.org/latest/examples/jpa-hibernate.html作为启动器。
他们通过以下方式创建EJB上下文
final Context context = EJBContainer.createEJBContainer(p).getContext();
然后有一条日志行:
信息-企业应用程序“ / Users / dblevins / examples / jpa-hibernate”已加载
您需要知道该应用程序名称才能向导出搜索字符串进行查找:
context.lookup("java:global/jpa-hibernate/Movies");
令我担心的是,我没有发现有关“ jpa-hibernate”部分来自何处的信息。它要么来自工件ID,要么更糟糕的是来自当前目录名称,这使得使用它的代码非常依赖于上下文,而开发人员无法控制。
我已经找到了如何指定该应用程序名称的方法,以便无论谁调用我的代码以及将代码复制到哪里都可以使用查找功能。
如何配置此应用程序名称?
答案 0 :(得分:1)
此单元测试示例中使用的嵌入式EJB容器允许在Java EE容器外部运行EJB。一个很好的介绍/教程可以在这里找到:https://docs.oracle.com/javaee/7/tutorial/ejb-embedded002.htm
它支持与常规EJB罐相同的配置文件,即,它支持ejb-jar.xml
配置文件(模块部署描述符)。可以在此处配置模块名称,例如
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
version="3.1">
<module-name>myapp</module-name>
</ejb-jar>
此文件需要进入jar的META-INF
目录。