gpt4 book ai didi

java - JBoss 7 覆盖 JNDI 数据源

转载 作者:行者123 更新时间:2023-12-01 13:17:48 25 4
gpt4 key购买 nike

我有一个 Spring Web 应用程序,其中配置了 Maven 3 和数据源/Bean,用于 h2 数据库上的本地开发。为了进行测试,存在 JBoss AS 7.1 服务器。

是否可以在特殊的 JBoss XML 文件中覆盖 Bean/DataSource,以便对于本地(IDE)事务使用 DriverManagerDataSource(请参阅第一个代码发布)和 JndiObjectFactoryBean(第二个),如果我的应用程序部署在JBoss上?

applicationContext.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>

非常感谢任何帮助。

最佳答案

您的应用程序自行创建数据库连接,正如我在您的配置中看到的那样。

您可以在应用程序服务器上定义数据源并通过 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>

关于java - JBoss 7 覆盖 JNDI 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22327445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com