为了简化通过连接池获取数据库连接的过程,JDBC2.0规范中引进了JDBC数据源(DataSource)的概念。DataSource对象是Connection对象的工厂,也可以认为是数据库连接池的管理员。我们的程序要通过Tomcat服务器获得数据库的连接,先要获取DataSource对象,然后通过DataSource对象获取连接池的连接。
Tomcat服务器中使用默认的连接池技术是DBCP。具体的配置是通过修改Tomacat服务器conf目录下的context.xml文件来进行配置的。
已经修改配置好context.xml文件的内容如下:
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name ="jdbc/oracleds" auth="Container" type="java.sql.DataSource"
maxActive="100" maxIdle="30“ maxWait="10000"
username ="platemm" password="platemm"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>
</Context>
配置完context.xml文件之后,还需要把Oracle数据库的驱动类库ojdbc6.jar文件复制到tomcat根目录下的lib目录中。
接下来在程序中就可以通过类似下面的代码片段来通过数据源对象获得连接池中的数据库的连接对象。
Context context = new InitialContext( );
DataSource ds = (DataSource) context.lookup("java:/comp/env/jdbc/oracleds");
Connection conn = ds.getConnection( );
说明:context是JNDI的上下文对象,作用上有些像我们所说的当前目录,调用这个对象的lookup()方法,就可以根据制定的JNDI的名字获得一个数据源对象,其中”java:/comp/env/"是必须有的内容,而”jdbc/oracleds“是我们context.xml文件所设置的参数name的值。然后通过DataSource对象ds的getConnection()方法就可以获得数据库的连接对象conn。这种方式获取的Connection对象在使用完后,必须在程序中显示地调用该对象的close()方法释放资源,即当前的Connection对象再返回到连接池中,而并不是真正的关闭其相应到数据库的连接。