「java多个数据源设置」java 多数据源

博主:adminadmin 2022-12-02 05:39:10 376

今天给各位分享java多个数据源设置的知识,其中也会对java 多数据源进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求助:Java数据源怎么配置?

一 首先要配置Tomcat的server.xml文件,在对应的web应用的Context中加入Resource元素,比如:

Context path="/Manager" reloadable="true"

Resource

name="hello"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

username="root"

password="123456"

maxIdle="4"

maxActive="4"

maxWait="5000"

url="jdbc:mysql://127.0.0.1/jspdev"

/

/Context

其中:

name:指定Resource的JNDI名字

type:指定Resource所属的Java类名

driverClassName:指定连接数据库的JDBC驱动程序

username:指定连接数据库的用户名

password:指定连接数据库的口令

maxIdle:指定数据库连接池中的最大空闲连接数目,0表示不受限制

maxActive:指定数据库连接池中的最大活动连接数目,0表示不受限制

maxWait:指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限

url:指定连接数据库的URL

二 在Web应用中使用数据源:

javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:

A.获得对数据源的引用:

Context ctx = new InitalContext();

DataSource ds =

(DataSource)ctx.lookup("java:comp/env/hello");

B.获得数据库连接对象:

Connection con = ds.getConnection();

C.返回数据库连接到连接池:

con.close();

在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。

三 如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。

java程序员在面试中被问到如何配置多数据源以及如何配置多数据源下的分布式事务,该怎么回答?看清再做答

你好,我来先回答你的第一个问题:

通常多数据源,在spring中配置如下,如果你想切换环境ENV 的值,在property中

bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"

property name="ignoreResourceNotFound" value="true"/property

property name="ignoreUnresolvablePlaceholders" value="true"/property

property name="nullValue" value="NULL"/property

property name="locations"

list

valuejdbc.properties/value

/list

/property

/bean

bean id="dataSource" class="com.spring.dao.JDBCConfig"

property name="driverClassName" value="${${Env}.jdbc.driverClassName}"/property

property name="url" value="${${Env}.jdbc.url}"/property

property name="username" value="${${Env}.jdbc.username1}"/property

property name="password" value="${${Env}.jdbc.password}"/property

/bean

jdbc.properties

*****************************

Env=PROD

jdbc.driverClassName=${${Env}.jdbc.driverClassName}

jdbc.url=${${Env}.jdbc.url}

jdbc.username=${${Env}.jdbc.username}

jdbc.password=${${Env}.jdbc.password}

######### JDBC Configuration for DEV Environment ###############

DEV.jdbc.driverClassName=com.mysql.jdbc.Driver

DEV.jdbc.url=jdbc:mysql://localhost:3306/devportal

DEV.jdbc.username=DEVuser

DEV.jdbc.password=DEVpwd

######### JDBC Configuration for UAT Environment ############

UAT.jdbc.driverClassName=com.mysql.jdbc.Driver

UAT.jdbc.url=jdbc:mysql://localhost:3306/UATportal

UAT.jdbc.username=UATuser

UAT.jdbc.password=UATpwd

########## JDBC Configuration for PROD Environment ############

PROD.jdbc.driverClassName=com.mysql.jdbc.Driver

PROD.jdbc.url=jdbc:mysql://localhost:3306/portal

PROD.jdbc.username=root

PROD.jdbc.password=admin,

我这里有三套环境,分别是DEV,UAT和PROD,这种方式可以灵活切换的。

我再回答你的第二个问题:

还请你去这里看下,很详细,不过是英文的哦

Spring怎样高效的配置多套数据源

1、首先配置多个datasource

!-- 主数据库的数据据源 --

bean id="masterDataSource" class="org.apache.commons.dbcp.BasicDataSource"

destroy-method="close"

property name="driverClassName" value="oracle.jdbc.OracleDriver" /

property name="url" value="jdbc:oracle:thin:@192.168.10.11:1521:trew" /

property name="username" value="poi" /

property name="password" value="poi" /

/bean

!-- 备份库的数据据源 --

bean id="slaveDataSource" class="org.apache.commons.dbcp.BasicDataSource"

destroy-method="close"

property name="driverClassName" value="oracle.jdbc.OracleDriver" /

property name="url" value="jdbc:oracle:thin:@192.168.10.12:1521:trew" /

property name="username" value="poi2" /

property name="password" value="poi2" /

/bean

2、写一个DynamicDataSource类继承AbstractRoutingDataSource,并实现determineCurrentLookupKey方法

?

public class DynamicDataSource extends AbstractRoutingDataSource {

@SuppressWarnings("unused")

private Log logger = LogFactory.getLog(getClass());

@Override

protected Object determineCurrentLookupKey() {

return DbContextHolder.getDbType();

}

}

public class DbContextHolder {

@SuppressWarnings("rawtypes")

private static final ThreadLocal contextHolder = new ThreadLocal();

@SuppressWarnings("unchecked")

public static void setDbType(String dbType) {

contextHolder.set(dbType);

}

public static String getDbType() {

return (String) contextHolder.get();

}

public static void clearDbType() {

contextHolder.remove();

}

}

3. 配置动态数据源

!--将DynamicDataSource Bean加入到Spring的上下文xml配置文件中去,同时配置DynamicDataSource的targetDataSources(多数据源目标)属性的Map映射。--

bean id="dataSource" class="cn.com.core.datasource.DynamicDataSource"

property name="targetDataSources"

map key-type="java.lang.String"

entry key="masterDataSource" value-ref="masterDataSource" /

entry key="slaveDataSource" value-ref="slaveDataSource" /

/map

/property

property name="defaultTargetDataSource" ref="masterDataSource"/

/bean

4.使用动态数据源(hibernate)

bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"

property name="dataSource" ref="dataSource" /

property name="lobHandler" ref="lobHandler"/

property name="eventListeners"

map

entry key="post-insert"

ref bean="logListener"/

/entry

entry key="post-update"

ref bean="logListener"/

/entry

entry key="post-delete"

ref bean="logListener"/

/entry

/map

/property

property name="hibernateProperties"

props

prop key="hibernate.dialect"

org.hibernate.dialect.Oracle10gDialect

!-- org.hibernate.dialect.OracleDerbyDialect --

/prop

prop key="hibernate.show_sql"true/prop

!-- prop key="hibernate.generate_statistics"true/prop --

prop key="hibernate.connection.release_mode"

auto

/prop

prop key="hibernate.autoReconnect"true/prop

!--

prop key="hibernate.hbm2ddl.auto"update/prop

--

prop key="hibernate.cache.use_second_level_cache"false/prop

prop key="hibernate.cache.provider_class"

org.hibernate.cache.EhCacheProvider

/prop

prop key="hibernate.cache.use_query_cache"false/prop

/props

/property

/bean

使用Hibernate时的事务管理配置示例:

bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"

property name="sessionFactory" ref="sessionFactory" /

bean

javaweb多数据源问题求解

很久没用了,ssh的本机线程栈 creteria能localthreadd 里取的。大概就是这样,要在xml里面打开一个东西 把它变成全局的,记不清了,你试试吧

java 中如何连接多个数据源

写多个 DBCon的类 每个类中 配置一个Oracle 数据库

或者 就一个类 多个方法 返还不同Oracle的数据路连接

没什么难度 放手做就好了

Java web点击按钮切换数据源

如果要在Javaweb切换数据源,首先你需要新建数据源常量类,此类中的常量是通过spring-db.xml映射对应的,然后配置spring-db.xml,这个是spring链接数据库的配置文件,再进行动态数据源设置,这个类是用来切换数据源,再获取jdbcTemplate的管理类。最后测试动态数据源,一般会用Junit4做单元测试。

总结:这种切换比较规范和简单,麻烦的是必须先配置多个数据源,以前是参考网上资料,自己修改的,希望对你有参考作用!

关于java多个数据源设置和java 多数据源的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。