现在的位置: 首页 > 综合 > 正文

有关jndi的单元测试

2012年08月14日 ⁄ 综合 ⁄ 共 1478字 ⁄ 字号 评论关闭

最近用到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外的所有其他属性将失效。

抱歉!评论已关闭.