我正在用JPA项目做一些EJB,它将一些实体映射/持久化到mysql数据库。 我在persistence.xml中定义了持久性单元,如下所示:
<persistence-unit name="MyAppPU" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>MyAppDS</jta-data-source>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
<property name="openjpa.jdbc.DBDictionary" value="mysql" />
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
</properties>
</persistence-unit>
然后,在tomee / conf / tomee.xml文件中,我已经定义了这样的数据源:
<Resource id="MyAppDS" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://127.0.0.1:3306/MyAppDB
UserName root
Password 123
JtaManaged true
DefaultAutoCommit false
</Resource>
所有这一切工作正常,我创建MyApp.jar,将其部署到TomEE服务器,测试它,我在数据库中获取mysql表。 我的问题是“还有其他我可以定义数据源资源的地方吗?” 或者它必须在tomee / conf / tomee.xml文件中? 它可以在应用程序结构中的某个位置定义,在某个xml文件中,并在应用程序jar文件中部署到服务器吗?
答案 0 :(得分:3)
这是JNDI数据源的重点,要在应用程序之外将其外部化,因此您可以在不重新编译或重新打包的情况下对其进行修改。所以最好不要这样做。
出于测试目的,某些EE服务器(如JBoss(Wildfly))允许您在项目中定义它。
答案 1 :(得分:2)
回答这个问题可能有点迟,你可以把资源定义放在WEB-INF/resources.xml
中。
答案 2 :(得分:0)
您只需要设置tomee.xml。如果您正在使用Eclipse,则必须将tomee.xml复制到服务器配置/ Tomee中以将其识别到Web项目中,否则您将遇到麻烦。