geronimo-application.xml 文件包含 元素,它具有名为 configId 的属性。该元素对于 Maven 构建脚本的自动部署特性的正确运行是十分关键的。所设置的值可用于 maven.xml 文件中任何 的 id 属性中,如 清单 6 所示。
清单 6. maven.xml 启动目标
<goal name="start">
<deploy:distribute
uri="deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector"
username="system"
password="manager"
home="${basedir}"
module="target/${pom.artifactId}.ear"
/>
<deploy:start
uri="deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector"
username="system"
password="manager"
id="org/acme/PhoneBook"/>
</goal>
在 清单 6 中,因为 geronimo-application.xml 文件中的 configId 属性被设置为 org/acme/PhoneBook,所以它还必须是自动部署语句中 id 属性的值。Geronimo 团队为此设置了一个非常好的自动部署工具。但是,如果您经常自动部署,请确保检查您的临时目录,因为它们可能装满了旧的部署文件。
资源目录中子目录列表中的下一个目录是 ejb 目录。openejb-jar.xml 部署描述符在 META-INF 子目录中。该文件对于数据库和实体 (CMP) bean 之间的所有连接是必不可少的。还必须对该文件进行小修改,以确保对于您的企业 bean 存在相应的 Java 命名和目录接口 (Java Naming and Directory Interface, JNDI) 名称。该文件如 清单 7 所示。
清单 7. openejb-jar.xml
<?xml version="1.0"?>
<openejb-jar
xmlns="http://www.openejb.org/xml/ns/openejb-jar"
configId="org/acme/PhonebookEJB"
parentId="MysqlDatabase">
<cmp-connection-factory>
<resource-link>MysqlDataSource</resource-link>
</cmp-connection-factory>
<enterprise-beans>
<entity>
<ejb-name>PhoneBookEntry</ejb-name>
<local-jndi-name>
java:comp/env/ejb/PhoneBookEntryLocal
</local-jndi-name>
<table-name>phone</table-name>
<cmp-field-mapping>
<cmp-field-name>name</cmp-field-name>
<table-column>name</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>phoneNumber</cmp-field-name>
<table-column>phone</table-column>
</cmp-field-mapping>
</entity>
<session>
<ejb-name>PhoneBookSession</ejb-name>
<local-jndi-name>
java:comp/env/ejb/PhoneBookSessionLocal
</local-jndi-name>
</session>
</enterprise-beans>
</openejb-jar>
