【问题标题】:Configuring data source - tomee.xml, persistence.xml配置数据源 - tomee.xml、persistence.xml
【发布时间】:2013-10-30 06:30:22
【问题描述】:

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

【问题讨论】:

    标签: java jpa ejb apache-tomee


    【解决方案1】:

    这就是 JNDI 数据源的全部意义,将其外部化到您的应用程序之外,这样您就可以在不重新编译或重新打包的情况下对其进行修改。所以还是这样比较好。

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

    【讨论】:

    • 我明白了。但是,假设我知道安装在其他 PC 上的 MySQL 数据库的数据库名称、用户名和密码,我只需将 MyApp.jar 复制/部署到该 PC 上的 tomee/webapps 文件夹并运行它。这就是为什么我想在应用程序结构中指定数据源。
    • 不仅仅是为了测试目的——在服务器级别定义它会导致部署任何额外的战争来重新实例化这些相同的资源。使用大型连接池,您可以快速耗尽资源。至少使用 context.xml 文件,我们可以将其限制在 conf/Catalina/localhost/contextname.xml 中。将其置于源代码之外(在 svn 树之外)很重要,因为它有密码,但我们仍然需要按应用程序(按战争)配置。
    【解决方案2】:

    回答这个问题可能有点晚了,您可以在 tomee 中将资源定义放在 WEB-INF/resources.xml 中。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        相关资源
        最近更新 更多