如题,直接上代码:
applicationContext.xml
<bean id="defaultDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialPoolSize" value="${pool.initialPoolSize}" />
<property name="minPoolSize" value="${pool.minPoolSize}" />
<property name="maxPoolSize" value="${pool.maxPoolSize}" />
<property name="maxIdleTime" value="${pool.maxIdleTime}" />
<property name="acquireIncrement" value="${pool.acquireIncrement}" />
<property name="checkoutTimeout" value="${pool.checkoutTimeout}" />
<property name="maxIdleTimeExcessConnections" value="${pool.maxIdleTimeExcessConnections}" />
</bean>
<bean id="dataSource" class="com.naton.core.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="dataSourceOracle" value-ref="defaultDataSource" />
</map>
</property>
<property name="defaultTargetDataSource" ref="defaultDataSource" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
<prop key="hibernate.search.default.indexBase">${java.io.tmpdir}/shop/index</prop>
</props>
</property>
<property name="packagesToScan" value="com.xxx" />
</bean>
DynamicDataSource.java
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return "dataSourceOracle";
}
@Override
protected DataSource determineTargetDataSource() {
DataSource dataSource = super.determineTargetDataSource();
try {
HttpSession session = ServletActionContext.getRequest().getSession();
if (session == null)
return dataSource;
Object dataSourceObj = session.getAttribute("dataSource");
if (dataSourceObj == null)
return dataSource;
else
dataSource = (DataSource) dataSourceObj;
} catch (Exception e) {
}
return dataSource;
}
}
login.java
public String login() {
// 验证密码 略
try {
ComboPooledDataSource dataSource = CommonUtil.dataSourceMap.get("username");
if (dataSource == null) {
dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
dataSource.setJdbcUrl("jdbc:oracle:thin:@172.30.70.18:1521:orcl");
dataSource.setUser("SXNWGSPPORTAL");
dataSource.setPassword("SXNWGSPPORTAL");
CommonUtil.dataSourceMap.put("username", dataSource);
}
httpSession.setAttribute("dataSource", dataSource);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
return "login";
}
【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;【运营】运维艄公,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;【体验设计】兜兜,2435632247@qq.com;
【iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【Java】首席工程师MR_W,feixue300@qq.com;【测试】土镜问道,847071279@qq.com;
【数据】fox009521,42151960@qq.com;【安全】保密,你懂的。