配置数据源--tomee.xml,persistence.xml

时间:2013-10-21 16:36:38

标签: java jpa ejb tomee

我正在用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文件中部署到服务器吗?

3 个答案:

答案 0 :(得分:3)

这是JNDI数据源的重点,要在应用程序之外将其外部化,因此您可以在不重新编译或重新打包的情况下对其进行修改。所以最好不要这样做。

出于测试目的,某些EE服务器(如JBoss(Wildfly))允许您在项目中定义它。

答案 1 :(得分:2)

回答这个问题可能有点迟,你可以把资源定义放在WEB-INF/resources.xml中。

答案 2 :(得分:0)

您只需要设置tomee.xml。如果您正在使用Eclipse,则必须将tomee.xml复制到服务器配置/ Tomee中以将其识别到Web项目中,否则您将遇到麻烦。