【发布时间】:2021-06-02 05:19:07
【问题描述】:
如何正确配置 WildFly 8.x JTA 数据源以便将 JPA 与 EclipseLink 和 Microsoft 的 SQLServer 数据库一起使用?
【问题讨论】:
标签: sql-server jpa wildfly eclipselink jta
如何正确配置 WildFly 8.x JTA 数据源以便将 JPA 与 EclipseLink 和 Microsoft 的 SQLServer 数据库一起使用?
【问题讨论】:
标签: sql-server jpa wildfly eclipselink jta
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.jar 和jipijapa_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.jar 和sqljdbc4.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”中的以下值:HostName、DBName、username、password、java:jboss/MyDS、@ 987654361@.
12- 您不必对 pom.xml 文件进行任何更改,这是我的:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jpa</groupId>
<artifactId>JPATest</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<finalName>JPATest</finalName>
</build>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
【讨论】: