当前位置: 首页 > 知识库问答 >
问题:

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

阎丰羽
2023-03-14

如何正确配置Wildfly8.x JTA数据源,以便在EclipseLink和Microsoft的SQLServer数据库中使用JPA?

共有1个答案

齐望
2023-03-14

A:用WildFly配置EclipseLink

1-从Maven下载eclipselinkjar:

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

2-将其重命名为eclipselink.jar

3-从Maven下载Jipijapa EclipseLink Integrationjar:

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

4-将其重命名为jipijapa_eclipselink.jar

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 JDBCjar:

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

2-将其重命名为mssql.jar

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>
<?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>

8-编辑[JBOSS_HOME]\standalone\configuration\standalone.xml,方法是添加以下数据源(搜索 标记并将以下数据源插入其中):

<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(搜索 标记,您将在其中找到 标记,并将以下驱动程序插入其中):

<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”中的以下值:主机名dbnameusernamepasswordjava:jboss/mydsmy-persistence-unit

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>
 类似资料:
  • 我被要求将大型独立Swing应用程序的数据库连接JAR从Eclipselink JPA 2.0迁移到Eclipselink JPA 3.0实现。 我看到一个很大的不同:Eclipselink 3.0使用雅加达。现在我所要做的就是连接到数据库,但到目前为止我一直没有成功,我不知道为什么。这是我的测试课: 当我运行这个时,我得到了这个异常。 异常告诉我我的persistence.xml或我正在使用的j

  • 问题内容: 我实现了一个使用Oracle DB的Web应用程序(JEE6,EJB WebProfile)。我的问题是,我需要更改使用的数据库架构(名称),而无需重新编译/重新打包应用程序。因此,我想要的(这只是一个主意,也许有人有更好的主意),是在服务器内进行一些配置(JNDI),具体说明架构名称。但是,如何配置Eclipse Link在运行时使用其他模式名称? 细节: 目前,我使用该文件指定架构

  • 问题内容: 我有一个需要配置基于Spring的应用程序以与两个数据库一起使用的要求。我们有两个数据库,一个用于保存实时数据,另一个数据库用作数据仓库,并包含存档的数据(其结构与实时数据库完全相同)。 为简单起见,假设存在搜索产品的请求。应用程序应该做的是在实时数据库中搜索产品详细信息,如果找不到,它将检查存档数据库。 如果需要配置这样的设置,是否仍需要配置数据源,搜索代码是否必须使用第一个数据源来

  • 尝试基于以下内容设置应用程序时出错:SPRING-DATA-JPA, GWT项目。尝试在托管模式下运行时出现异常: 嵌套在org.springframework.beans.factory.BeanCreationException:创建名称为org.springframework.dao.annotation.的bean时出错:bean初始化失败;嵌套异常是org.springframework

  • 新建数据库 在本地新建一个数据库 demo 打开common/config/main-local.php 修改数据库配置 'components' => [ ... 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbna

  • 因为 Canal 是模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议,所以需要 MySql 开启 binlog 修改 mysql.cnf 中的配置 [mysqld] log-bin=mysql-bin # 开启 binlog binlog-format=ROW # 选择 ROW 模式 server_id=1 # 配置