【问题标题】:How do you use JTA in EclipseLink?如何在 EclipseLink 中使用 JTA?
【发布时间】:2017-05-31 08:11:42
【问题描述】:

我们需要使用 Eclipse Link 将数据库详细信息的用户定义属性替换为 JTA 标记。我有下面的 persistence.xml 使用数据库值。

<?xml version="1.0" encoding="UTF-8"?>
<persistence xsi:SchemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit transaction-type="RESOURCE_LOCAL" name="UTILITY">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>ae.du.selfcare.utility.jpa.SelfcareJmsCreatett</class>
<properties>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:Oracle:thin:@IMP1SCDVDB1:1524:SCRTQC2"/>
<property name="javax.persistence.jdbc.user" value="******"/>
<property name="javax.persistence.jdbc.password" value="********"/>
<property name="eclipselink.connection-pool.default.initial" value="1"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
</properties>
</persistence-unit>
</persistence>

我知道如何在 Hibernate 中使用这个 JTA

 <persistence-unit name="PU" transaction-type="JTA">
        <jta-data-source>java:jboss/datasources/Hanse</jta-data-source>
        <class>model.Commodity</class>
        <class>model....</class>
        <class>model....</class>
        <properties>
            <!-- <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/> -->
            <!-- <property name="hibernate.hbm2ddl.auto" value="update" /> -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
            <!-- <property name="hibernate.show_sql" value="true" /> -->
            <property name="hibernate.enable_lazy_load_no_trans" value="true"/>
        </properties>
    </persistence-unit>

但是在这里,我需要用 Eclipse 链接。你能帮帮我吗? 提前致谢!!。

【问题讨论】:

  • 你使用的是哪个应用服务器?
  • Weblogic 服务器 10.3.6

标签: jpa eclipselink jta persistence.xml


【解决方案1】:

当您使用 weblogic 服务器时,您可以使用数据源。我正在使用 12c,并且我有以下persistance.xml,这可能会对您有所帮助。

<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
<persistence-unit name="WebService" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/MyDataSource</jta-data-source>
<class>model.HrAddressL1L2DataV</class>
<class>model.HrJobsLookupV</class>
<properties>
  <property name="eclipselink.target-server" value="WebLogic_10"/>
  <property name="javax.persistence.jtaDataSource" 
 value="jdbc/MyDataSource"/>
</properties>
</persistence-unit>
</persistence>

【讨论】:

    【解决方案2】:

    EclipseLink 官方文档为 WebLogic 10.x 应用服务器中的这个场景提供了一个很好的 tutorial page

    配置和绑定到 DataSource 基本上涉及三个配置步骤。它们是:

    1. *-jdbc.xml 配置文件中提供数据源的定义。 (在 EAR 内)
    2. 向 EAR 的 /META-INF/weblogic-application.xml 中的 WebLogic 应用程序配置提供 JDBC 模块配置 sn-p。
    3. 更改 JPA 持久性单元 以使用应用程序范围的数据源,例如:&lt;jta-data-source&gt;java:/app/jdbc/SimpleAppScopedDS&lt;/jta-data-source&gt;。接下来,设置transaction-type="JTA" 而不是"RESOURCE_LOCAL" (在 EJB 中)

    更多细节请参考上述教程的配置示例。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      我知道如何在 Hibernate 中使用这个 JTA [...] 但是在这里,我需要使用 Eclipse 链接。

      使用 JTA 托管数据源非常标准,只需更改持久性提供程序类就足够了,不需要特殊属性即可使其工作:

      <persistence-unit name="PU" transaction-type="JTA">
          <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
          <jta-data-source>jdbc/MyDataSource</jta-data-source>
          ...
      </persistence-unit>
      

      当然,您需要确保在您的应用服务器中配置了一个可通过 JNDI 访问的 DataSource,并在 &lt;jta-data-source/&gt; 属性中使用相同的名称。

      查看 JEE 教程的DataSource Objects and Connection Pools 部分了解更多详情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 2012-06-28
        • 1970-01-01
        相关资源
        最近更新 更多