最近用到tomcat下配置jndi的数据连接池。但对其做单元测试,有个问题
eclipse中的juit,要实现脱离tomcat服务器来配置jndi,这就要在test案例中做jndi单独配置
这里主要用到了DataSource,我们所做的主要是对DataSource 进行自配
我用到的是hsql数据库,下面是相关的取得DataSource的例子(从网上找的一遍比较不错的例子)
public class Database {
private DataSource ds;
public Database() {
org.hsql.jdbc.jdbcDataSource jds = new org.hsql.jdbc.jdbcDataSource();
jds.setDatabase("jdbc:hsqldb:.");
jds.setUser("sa");
jds.setPassword("");
ds = jds;
}
public boolean execute(String sql) throws Exception {
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
Boolean re = stmt.execute(sql);
stmt.close();
conn.close();
return re;
}
}
下面是oracle 独立使用数据源的例子
实际应用中,你可以把OracleDataSource注册到JNDI,也可以单独使用。// 初始化数据源实例
OracleDataSource ods = new OracleDataSource();
ods.setDriverType("thin");
ods.setServerName("Chicago");
ods.setNetworkProtocol("tcp");
ods.setDatabaseName("chidb");
ods.setPortNumber(1521);
ods.setUser("guest");
ods.setPassword("guest");
// 从数据源中获取数据库连接
Connection conn = ods.getConnection();
// 通过数据库连接进行数据操作
………………
使用OracleDataSource时有几点需要注意:
如果使用的时服务器端内部驱动程序(server-side internal driver),driverType属性会被设置为kprb,其它所有属性失效。
如果使用Thin或OCI驱动程序:
URL中可以包括用户登录名和用户登录密码。例如:
jdbc:oracle:thin:guest/guest@Chicago:1521:chidb;
如果设定了url属性,tnsEntry, driverType, portNumber, networkProtocol, serverName,和databaseName属性将失效。
在没有设定url属性的情况下,如果设定了tnsEntry属性,portNumber, networkProtocol, serverName,和databaseName属性将失效。
如果使用OCI驱动程序,并且networkProtocol属性被设定为ipc,除user和password外的所有其他属性将失效。