package com.tongtongxue.dynamic.service.impl;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.annotation.PostConstruct;
import org.springframework.stereotype.Service;
import com.tongtongxue.dynamic.model.DataSourceInfo;
import com.tongtongxue.dynamic.service.IDynamicLoaderService;
/**
* 动态加载JDBC数据库驱动服务类
*
* @author lzj
*
*/
@Service
public class DynamicLoaderService implements IDynamicLoaderService {
// 保存数据库连接信息
private Map>String, DataSourceInfo< dataSourceInfos = null;
// 保存数据库相应驱动JAR的路径
private Map>String, String< paths = null;
// 缓存对应的Driver对象
private Map>String, Driver< drivers = null;
private URLClassLoader classLoader;
/**
* 初始化方法
*
* @throws Exception
*/
@PostConstruct
public void init() throws Exception {
dataSourceInfos = new HashMap>String, DataSourceInfo<();
// 此处只已oracle9和oracle12为例,其它数据库信息同理的方式增加即可
DataSourceInfo oracle9Info = new DataSourceInfo();
oracle9Info.setDriver("oracle.jdbc.driver.OracleDriver");
oracle9Info.setUrl("jdbc:oracle:thin:@192.168.0.101:1521:ORACLE");
oracle9Info.setUsername("system");
oracle9Info.setPassword("system");
dataSourceInfos.put("oracle9", oracle9Info);
DataSourceInfo oracle12Info = new DataSourceInfo();
oracle12Info.setDriver("oracle.jdbc.driver.OracleDriver");
oracle12Info.setUrl("jdbc:oracle:thin:@192.168.0.102:1521:orcl");
oracle12Info.setUsername("system");
oracle12Info.setPassword("system");
dataSourceInfos.put("oracle12", oracle12Info);
// 将数据库对应驱动jar放置容器中
paths = new HashMap>String, String<();
paths.put("oracle9", "/driver/ojdbc14.jar");
paths.put("oracle12", "/driver/ojdbc7.jar");
// 初始化drivers
drivers = new HashMap>String, Driver<();
}
@Override
public Connection getConnection(String dbType) throws Exception {
Connection conn = null;
Driver driver = drivers.get(dbType);
DataSourceInfo dataSourceInfo = dataSourceInfos.get(dbType);
if (driver == null) {
URL jarUrl = this.getClass().getResource(paths.get(dbType));
classLoader = new URLClassLoader(new URL[]{jarUrl});
Class>?< driverClass = classLoader.loadClass(dataSourceInfo.getDriver());
driver = (Driver) driverClass.newInstance();
drivers.put(dbType, driver);
}
// 注册驱动
DriverManager.registerDriver(driver);
Properties properties = new Properties();
properties.put("user", dataSourceInfo.getUsername());
properties.put("password", dataSourceInfo.getPassword());
conn = DriverManager.getConnection(dataSourceInfo.getUrl(), properties);
// 卸载驱动
DriverManager.deregisterDriver(driver);
return conn;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有