2017-05-31 100 views
0

我們需要使用Eclipse Link將帶有JTA標籤的數據庫細節的用戶定義屬性替換掉。我有下面的persistence.xml使用DB值。如何在EclipseLink中使用JTA?

<?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> 

我知道如何使用這個JTA與Hibernate

<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鏈接。你能幫我解決嗎? 在此先感謝!!

+0

您正在使用哪個應用程序服務器? – john

+0

Weblogic服務器10.3.6 – user1111880

回答

0

當您使用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> 
0

我知道如何使用這個JTA與Hibernate [...]但在這裏實現,我需要與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> 

當然,你需要確認有一個DataSource通過應用程序服務器中的JNDI進行配置和訪問,並在<jta-data-source/>屬性中使用非常相同的名稱。

請看看JEE教程的DataSource Objects and Connection Pools部分以瞭解更多細節。

1

官方EclipseLink文檔爲WebLogic 10.x應用程序服務器中的此方案提供了一個不錯的tutorial page

配置和綁定到DataSource基本上涉及三個配置步驟。它們是:

  1. *-jdbc.xml配置文件中提供數據源的定義。 (在EAR內)
  2. 向EAR的/META-INF/weblogic-application.xml中的WebLogic應用程序配置提供JDBC模塊配置片段。
  3. 更改JPA 持久性單元以使用應用程序範圍的數據源,例如:<jta-data-source>java:/app/jdbc/SimpleAppScopedDS</jta-data-source>。接下來,設置transaction-type="JTA"代替"RESOURCE_LOCAL"

(一個EJB內)進一步的細節,請參閱配置示例前述教程。

希望它有幫助。