首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑Persistence.xml jta-来自WebLogicDeploymentPlan.xml的数据源

编辑Persistence.xml jta-来自WebLogicDeploymentPlan.xml的数据源
EN

Stack Overflow用户
提问于 2014-08-26 20:26:27
回答 1查看 5.2K关注 0票数 0

我的应用程序使用Spring 4.0.5和ToplinkEssentsJPA2.1-60,并部署到WebLogic10.3.6.0服务器上。

我正在尝试部署我的应用程序的两个实例,以便创建一个开发和测试部署。这两个文件都将使用相同的.war文件。这两个实例将具有不同的上下文根,并连接到不同的数据源。

这将在weblogic部署计划中定义。

我可以在没有任何问题的情况下改变上下文根。问题是试图更改数据源。

当我直接从Eclipse在服务器上运行时,数据源是在weblogic.xml中定义的。但是,当我构建.war文件并手动部署应用程序时,数据源仅在persistence.xml中定义。换句话说,我可以任意更改weblogic.xml,而且它不会影响它连接到哪个数据源。为了连接到其他数据源,我必须在persistence.xml中更改它。

要么我无法从我的部署计划( plan.xml )中编辑plan.xml,要么我的plan.xml就错了。

有没有办法迫使persistence.xml引用weblogic.xml数据源而不是硬编码的数据源?因为我知道我可以使用部署计划编辑weblogic.xml。如果没有,是否有一种方法可以直接从部署计划编辑persistence.xml数据源(从jdbc/PQRS更改为jdbs/PQRSTest)?

我不确定哪些文件需要帮助,所以我将包括所有这些文件。

谢谢你的帮忙!

weblogic.xml

代码语言:javascript
复制
<!-- web application's server path for deployment -->
<weblogic-version>10.3.6</weblogic-version>
<context-root>pqrs</context-root> 
...
<resource-description>
    <res-ref-name>jdbc/PQRS</res-ref-name>
    <jndi-name>jdbc/PQRS</jndi-name>
</resource-description>

persistence.xml

代码语言:javascript
复制
<persistence-unit name="pqrsPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <non-jta-data-source>jdbc/PQRS</non-jta-data-source>
    ...
    <properties>
        <property name="toplink.weaving" value="false"/>
        <!-- <property name="toplink.logging.level" value="FINE"/> -->
    </properties>        
</persistence-unit>

web.xml

代码语言:javascript
复制
<web-app>
  ...
  <resource-ref>
    <description>My DataSource Reference</description>
    <res-ref-name>jdbc/PQRS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
</web-app>

applicationContext.xml

代码语言:javascript
复制
<!-- Processes PersistenceUnit and PersistenceContext annotations for injection of JPA resources -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<!-- Creates a EntityManagerFactory for use with the JPA provider -->
<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="pqrsPU"/>
    <property name="dataSource" ref="dataSource" />
    <!-- Needs spring instrument library along with aspectjrj.jar & aspectjweaver.jar libraries
    <property name="loadTimeWeaver">
      <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
    </property>
    -->
</bean>

plan.xml

代码语言:javascript
复制
<deployment-plan>
<application-name>crr</application-name>
  <variable-definition>
    <variable>
      <name>contextRootName</name>
      <value>/pqrsTest</value>
    </variable>

  <variable>
      <name>dataSourceName</name>
      <value>jdbc/PQRSTest</value>
    </variable>
  </variable-definition>

  <module-override>
    <module-name>pqrs.war</module-name>
    <module-type>war</module-type>

    <module-descriptor external="false">
      <root-element>weblogic-web-app</root-element>
      <uri>WEB-INF/weblogic.xml</uri>

        <variable-assignment>
            <name>contextRootName</name>
            <xpath>/weblogic-web-app/context-root</xpath>
            <operation>replace</operation>
        </variable-assignment>
    </module-descriptor>

    <module-descriptor external="false">
        <root-element>persistence</root-element>
        <uri>WEB-INF/classes/META-INF/persistence.xml</uri>
        <variable-assignment>
            <name>dataSourceName</name>
            <xpath>/persistence/persistence-unit[name="pqrsPU"]/non-jta-data-source</xpath>
            <operation>replace</operation>
        </variable-assignment>
    </module-descriptor>

  </module-override>

  <config-root>/usr/local/oracle/wls103607/domains/Dpqrs/apps/test</config-root>
</deployment-plan>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 21:34:38

如果在persistence.xml中使用java:comp/env/jdbc/myds风格的jndi名称,则必须在weblogic*xml中定义绑定。

然后,您可以使用部署计划对其进行更改。

(我还没试过)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25514588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档