Tomcat自带数据库连接池,但是需要进行相应的配置才能使用Tomcat的数据库连接池。此文只针对Tomcat6.0进行配置。
1.在自己的项目下的META-INF(注意:不是WEB-INF,我看网上很多人都弄错了)下面新建一个context.xml文件,文件内容为:
<?xml version="1.0" encoding="UTF-8"?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> //监听资源 <Resource name="myoracle" //给资源随便起一个名字,用于在程序中调用。 auth="Container" // type="javax.sql.DataSource" //资源类型 driverClassName="oracle.jdbc.OracleDriver" //加载驱动,每种数据库的方式不同,自己参考资料。 url="jdbc:oracle:thin:@localhost:1521:ICSS" //连接字符串,相信大家不陌生。 username="jsp" //访问数据库用户名 password="jsp" //访问数据库的密码 maxActive="200" //最大可以有200名用户连接数据源 maxIdle="10" //如果没有用户连接,空出10个连接等待用户连接 maxWait="5000"/> //如果已连接用户5000秒内没有再次连接数据源,则放弃此连接 </Context> |
2.如果不是用的myeclipse自带的tomcat,则要到那个tomcat下面conf\Catalina\localhost删除host-manager.xml和manager.xml。
3.然后就在servlet里面调用了,调用方法:
需要用到的引用:
import javax.sql.DataSource; import javax.naming.InitialContext; import java.sql.Connection; InitialContext initCtx = new InitialContext(); // //下面的” java:comp/env”是固定的,”myoracle”是在context.xml中指定的name。 DataSource ds = (DataSource)initCtx.lookup("java:comp/env/myoracle"); Connection conn = ds.getConnection(); //获取连接。 |
附加: 1.Sql server 的context.xml配置:
<Resource name="名字" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="5000" username="用户名" password="密码" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=数据库名" / |
2.oracle的context.xml配置:(已经在上面展示过了)
3.mysql的context.xml配置:
<Resource name="名字" auth="Container" type="javax.sql.DataSource" //资源类型 driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/数据库名" username="用户名" password="密码" maxActive="100" //最大连结数 maxIdle="30" //最大空闲时间,0为无限制 maxWait="10000"/> //建立连接的的最大等待时间 |
---------------------以下已经实现过----------------------------------------
以下是我工程中用到的一个实例(sql2005):
context.xml内容:
<?xml version="1.0" encoding="GBK"?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!--2000:driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"--> <!--2000:url="jdbc:microsoft:sqlserver://192.168.0.15:1433;DatabaseName=XR-2000" --> <!--2005:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"--> <!--2005:url="jdbc:sqlserver://localhost:1433;DatabaseName=XR-2000" --> <Resource name="jdbc/sql" auth="Container" type="javax.sql.DataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;DatabaseName=XR-2000" username="sa" password="123456" maxActive="200" maxIdle="50" maxWait="-1"/> </Context> |
调用:
Context ctx = null; try { ctx = new InitialContext(); } catch (NamingException e1) { } DataSource ds = null; try { ds = (DataSource) ctx.lookup("java:comp/env/jdbc/sql"); } catch (NamingException e2) { } Connection conn = null; try { conn = ds.getConnection(); } catch (SQLException e3) { } Statement stmt = null; try { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);//红色部分这样定义就可以使用rs.last()方法了 } catch (SQLException e) { } |