为 Apache TomEE 指定应用程序名称

Specify application name for Apache TomEE

我需要在独立应用程序中使用 JPA,所以我找到了示例 http://tomee.apache.org/latest/examples/jpa-hibernate.html 作为入门。

他们通过

创建 EJB 上下文
final Context context = EJBContainer.createEJBContainer(p).getContext();

然后是日志行:

INFO - Enterprise application "/Users/dblevins/examples/jpa-hibernate" loaded

您需要知道该应用程序名称才能向导出用于查找的搜索字符串:

context.lookup("java:global/jpa-hibernate/Movies");

让我担心的是,我没有找到关于这些 'jpa-hibernate' 部分来自何处的信息。它要么来自工件 ID,要么更糟糕的是来自当前目录名称,这使得使用它的代码非常依赖于开发人员无法控制的上下文。

我完全 google 找到了如何指定该应用程序名称的方法,这样我就可以使用无论谁调用我的代码以及代码被复制到哪里都能正常工作的查找。

如何配置此应用程序名称?

本单元测试示例中使用的嵌入式 EJB 容器允许 运行 EJB 在 Java EE 容器之外。一个好的introduction/tutorial可以在这里找到:https://docs.oracle.com/javaee/7/tutorial/ejb-embedded002.htm

它支持与常规EJB-jars相同的配置文件,即它支持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 目录。