JPA:使用 EclipseLink 和 Microsoft 的 SQLServer 数据库配置 WildFly 8.x JTA 数据源

问题描述

如何正确配置 WildFly 8.x JTA 数据源以便将 JPA 与 EclipseLink 和 Microsoft 的 sqlServer 数据库一起使用?

解决方法

A:使用 WildFly 配置 EclipseLink

1- 从 Maven 下载 EclipseLink jar:

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.6.2</version>
</dependency>

2- 将其重命名为 eclipselink.jar

3- 从 Maven 下载 JipiJapa EclipseLink Integration jar:

<dependency>
  <groupId>org.jipijapa</groupId>
  <artifactId>jipijapa-eclipselink</artifactId>
  <version>1.0.1.Final</version>
</dependency>

4- 将其重命名为 jipijapa_eclipselink.jar

5- 创建文件夹 [JBOSS_HOME]\modules\org\eclipse\persistence\main

6- 在同一文件夹中创建 module.xml 并将以下内容粘贴到 它:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.eclipse.persistence">
   <resources>
      <resource-root path="eclipselink.jar" />
      <resource-root path="jipijapa_eclipselink.jar" />
   </resources>
   <dependencies>
      <module name="javax.api" />
      <module name="javax.persistence.api" />
      <module name="javax.transaction.api" />
      <module name="javax.validation.api" />
      <module name="javax.xml.bind.api" />
      <module name="org.antlr" />
      <module name="org.apache.commons.collections" />
      <module name="org.dom4j" />
      <module name="org.javassist" />
      <module name="org.jboss.logging" />
      <module name="javax.ws.rs.api"/> 
   </dependencies>
</module>

7- 将 eclipselink.jarjipijapa_eclipselink.jar 复制到同一文件夹中。

B:使用 WildFly 配置 MSSQL

1- 从 Maven 下载 MSSQL JDBC jar:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.5.2.jre8</version>
    <scope>test</scope>
</dependency>

2- 将其重命名为 mssql.jar

3- 从 Maven 下载 SqlJdbc4 jar:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

4- 将其重命名为 sqljdbc4.jar

5- 创建文件夹 [JBOSS_HOME]\modules\com\microsoft\main

6- 在同一文件夹中创建 module.xml 并将以下内容粘贴到其中:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
  <resources>
    <resource-root path="sqljdbc4.jar"/>
    <resource-root path="mssql.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

7- 将 mssql.jarsqljdbc4.jar 复制到同一个文件夹中。

8- 通过添加以下数据源来编辑 [JBOSS_HOME]\standalone\configuration\standalone.xml(搜索 <datasources> 标记并将以下数据源插入其中):

<datasource jta="true" jndi-name="java:jboss/MyDS" pool-name="MyDS" enabled="true" use-ccm="true">
    <connection-url>jdbc:sqlserver://localhost:1433;databaseName=DBName</connection-url>
    <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    <driver>sqlserver</driver>
    <security>
        <user-name>username</user-name>
        <password>password</password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <timeout>
        <set-tx-query-timeout>false</set-tx-query-timeout>
        <blocking-timeout-millis>0</blocking-timeout-millis>
        <idle-timeout-minutes>0</idle-timeout-minutes>
        <query-timeout>0</query-timeout>
        <use-try-lock>0</use-try-lock>
        <allocation-retry>0</allocation-retry>
        <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
    </timeout>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

9- 通过添加以下驱动程序来编辑 [JBOSS_HOME]\standalone\configuration\standalone.xml(搜索 <datasources> 标签,您会在里面找到一个 <drivers> 标签,将以下驱动程序插入其中):

<driver name="sqlserver" module="com.microsoft">
    <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>

10- 将以下持久性单元添加到 persistence.xml 文件中:

<persistence-unit name="my-persistence-unit" transaction-type="JTA">
    <description>My Persistence Unit</description>
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>java:jboss/MyDS</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="javax.persistence.schema-generation.database.action" value="drop-and-create" />
        <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
        <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.PostgreSQLPlatform" />
    </properties>
</persistence-unit>

11- 不要忘记根据您的偏好更改上述步骤“8”和“10”中的以下值:HostNameDBNameusername、{{1 }}、passwordjava:jboss/MyDS

12- 您不必对 my-persistence-unit 文件进行任何更改,这是我的:

pom.xml