Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以在属性文件中设置JTA数据源名称吗_Java_Jpa_Jta_Weblogic11g - Fatal编程技术网

Java 我们可以在属性文件中设置JTA数据源名称吗

Java 我们可以在属性文件中设置JTA数据源名称吗,java,jpa,jta,weblogic11g,Java,Jpa,Jta,Weblogic11g,我们可以在属性文件中设置JTA数据源名称,该名称将在应用程序的persistence.xml中读取。您可以通过使用persistence.createEntityManagerFactory(persistenceUnitName,properties)动态生成EntityManagerFactory来覆盖persistence.xml文件中的值。,并使用属性映射指定数据源名称。但是,现在您不能使用@PersistenceContext在应用程序中的任何位置注入EntityManager,也不能

我们可以在属性文件中设置JTA数据源名称,该名称将在应用程序的persistence.xml中读取。

您可以通过使用
persistence.createEntityManagerFactory(persistenceUnitName,properties)动态生成
EntityManagerFactory来覆盖persistence.xml文件中的值。
,并使用
属性
映射指定数据源名称。但是,现在您不能使用
@PersistenceContext
在应用程序中的任何位置注入
EntityManager
,也不能使用
@PersistenceUnit
在应用程序中的任何位置注入
EntityManager
,您必须手动管理EntityManager事务。不要这样做。这是一个糟糕的想法。

还有另一种更简单的方法可以配置数据源名称和其他应用程序参数

我们使用maven配置文件和资源过滤来实现这一点。您需要在
persistence.xml
中定义与
.properties
文件或
.pom
中的属性名称相匹配的占位符

在构建过程中,指定概要文件,maven将用属性替换占位符

我们使用这种技术在不同的部署环境之间切换数据源

编辑:

首先,定义用于资源筛选的配置文件:

<profiles>
  <profile>
   <id>set_datasource</id>
     <build>
       <!-- enable resource filter to set the datasource name --
       <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
      ...

可以请你添加一些示例代码,这将有很大帮助。
<profile>
      <id>db_test</id>
    <properties>
      <database.name>test_ds</database.name>
    </properties>
</profile>
  <persistence-unit name="my_db">
    <jta-data-source>java:jboss/datasources/${datasource.name}</jta-data-source>
  </persistence-unit>
mvn test -Pdatasource,db_test