jboss7重写jndi数据源

tjjdgumg  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(329)

我有一个springweb应用程序,它带有maven 3和为h2数据库上的本地开发配置的数据源/bean。为了进行测试,存在一个jbossas7.1服务器。
如果我的应用程序部署在jboss上,是否可以重写特殊jboss xml文件中的bean/datasource,以便在本地(ide)事务中使用drivermanagerdatasource(参见第一个代码发布)和jndiobjectfactorybean(第二个)?
应用程序上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx" xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
<!-- And so on -->">

<!--GENERAL-->
<context:annotation-config/>
<context:component-scan base-package="com.mysuperapp"/>

<!--DATASOURCES-->
<bean id="activitiDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:file:h2\activiti;MVCC=TRUE"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

<bean id="hibernateDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:file:h2\hibernate;AUTO_SERVER=TRUE"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

<!--TXMANAGEMENT-->

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="mysuperappPersistenceUnit"/>
    <property name="dataSource" ref="hibernateDataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
    </property>
    <property name="packagesToScan" value="com.mysuperapp.model"/>
    <property name="jpaPropertyMap">
        <map>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            <entry key="hibernate.hbm2ddl.auto" value="update"/>
        </map>
    </property>
</bean>

<!-- And so on -->

jboss的自定义applicationcontext.xml数据源

<bean id="activitiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:jboss/datasources/activitiDataSource"/>
</bean>

<bean id="hibernateDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:jboss/datasources/hibernateDataSource"/>
</bean>

非常感谢您的帮助。

pieyvz9o

pieyvz9o1#

我用一个svn补丁实现了这一点,它是在自动部署之前添加的。它会更改数据源定义。
使用windows创建补丁和在linux下使用/usr/bin/patch应用时要注意(cr+lf问题,对补丁和要修补的文件都应用dos2unix文件名)。

bfhwhh0e

bfhwhh0e2#

正如我在配置文件中看到的那样,应用程序自己创建数据库连接。
您可以在app服务器上定义数据源并通过jndi查找来获取数据源,而不必这样做。因此,可以分别为每个系统配置数据库连接。

<!-- DataSource-LookUp -->
 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">  
    <property name="jndiName" value="java:jboss/datasources/MyDataSourceDS" />  
    <property name="resourceRef" value="true" />  
</bean>
5w9g7ksd

5w9g7ksd3#

你的jboss有一个文件 <jboss_home>/standalone/configuration/standalone.xml 如果不提供不同的,则使用。
出于测试目的,您可以尝试在同一目录中复制该文件,例如命名它 test.xml 并在那里添加数据源定义。然后通过启动jboss来使用它 standalone.bat --server-config=test 或者 standalone.bat -c test .

相关问题