数据库连接池

tomcat中的连接池

tomcat 6为例。首先在项目根目录下新建一个文件夹META-INF。在这个文件夹中新建一个文件context.xml

<?xml version="1.0" encoding="UTF-8"?>

<Context reloadable="true" crossContext="true">

 <!-- Default set of monitored resources -->

 <WatchedResource>WEB-INF/web.xml</WatchedResource>

 <!-- Uncomment this to disable session persistence across Tomcat restarts -->

 <!--

  <Manager pathname="" />

 -->

 <Resource

 name="jdbc/test"

 auth="Container"

 type="javax.sql.DataSource"

 driverClassName="oracle.jdbc.driver.OracleDriver"

 url="jdbc:oracle:thin:@localhost:1521:TESTDB"

 username="imti"

 password="123456"

 maxActive="20"

 maxIdle="10"

 maxWait="-1"/>

</Context>

 

使用连接池,注意在JNDI中加上:java:comp/env/

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="javax.naming.*"%>

<%

       final String JNDINAME = "java:comp/env/jdbc/test" ;

       Connection conn = null ;

       Statement stmt = null ;

       ResultSet rs = null ;

       String sql = null ;

%>

<%

       try

       {

              // 初始化查找命名空间

              Context ctx = new InitialContext() ;

              // 找到DataSource

              DataSource ds = (DataSource)ctx.lookup(JNDINAME) ;

              conn = ds.getConnection() ;

              stmt = conn.createStatement() ;

              sql = "SELECT sno,sname,ssex,sage,sdept FROM student" ;

              rs = stmt.executeQuery(sql) ;

%>

<table border="1" width="80%">

       <tr>

              <td>学号</td>

              <td>姓名</td>

              <td>性别</td>

              <td>年龄</td>

              <td>院系</td>

       </tr>

<%

              while(rs.next())

              {

            String no = rs. getString (1) ;

                     String name = rs.getString(2) ;

                     String sex = rs.getString(3) ;

                     int age = rs.getInt(4) ;

            String dept = rs.getString(5) ;

 

%>

                     <tr>

                            <td><%=no%></td>

                            <td><%=name%></td>

                            <td><%=sex%></td>

                            <td><%=age%></td>

                            <td><%=dept%></td>

                     </tr>

<%

              }

%>

       </table>

 

    <%

              rs.close() ;

              stmt.close() ;

              conn.close() ;

       }

       catch(Exception e)

       {

              out.println(e) ;

       }

%>

 

proxool连接池

一个开源工具,性能很好的数据库连接池,被广泛的使用。

首先将它的两个.jar文件放到项目的WEB-INF/lib文件夹下。然后编写proxool.xml文件,并将其放置在WEB-INF文件夹下。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- the proxool configuration can be embedded within your own application's.Anything outside the "proxool" tag is ignored. -->

<something-else-entirely>

 <proxool>

  <alias>Oracle10g</alias>

  <driver-url>jdbc:oracle:thin:@localhost:1521:TESTDB</driver-url>

  <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

  <driver-properties>

   <property name="user" value="imti" />

   <property name="password" value="123456" />

  </driver-properties>

  <maximum-connection-count>10</maximum-connection-count>

  <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>

 </proxool>

</something-else-entirely>

注意:红色标记部分将来作为程序中使用的连接字符串。

 

然后,需要配置web.xml文件

<servlet>

  <servlet-name>ServletConfigurator</servlet-name>

  <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>

  <init-param>

   <param-name>xmlFile</param-name>

   <param-value>WEB-INF/proxool.xml</param-value>

  </init-param>

  <load-on-startup>1</load-on-startup>

 </servlet>

 

 <servlet>

  <servlet-name>proxool</servlet-name>

  <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>

 </servlet>

  <servlet-mapping>

  <servlet-name>proxool</servlet-name>

  <url-pattern>/proxool</url-pattern>

 </servlet-mapping>

当有数据库连接时,可以通过/proxool映射,来观察数据库连接情况。

 

使用范例:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<%

       Connection conn = null ;

       Statement stmt = null ;

       ResultSet rs = null ;

       String sql = null ;

%>

<%

       try

       {

              conn = DriverManager.getConnection("proxool.Oracle10g") ;

              stmt = conn.createStatement() ;

              sql = "SELECT sno,sname,ssex,sage,sdept FROM student" ;

              rs = stmt.executeQuery(sql) ;

%>

<table border="1" width="80%">

       <tr>

              <td>学号</td>

              <td>姓名</td>

              <td>性别</td>

              <td>年龄</td>

              <td>院系</td>

       </tr>

<%

              while(rs.next())

              {

            String no = rs. getString (1) ;

                     String name = rs.getString(2) ;

                     String sex = rs.getString(3) ;

                     int age = rs.getInt(4) ;

            String dept = rs.getString(5) ;

%>

                     <tr>

                            <td><%=no%></td>

                            <td><%=name%></td>

                            <td><%=sex%></td>

                            <td><%=age%></td>

                            <td><%=dept%></td>

                     </tr>

<%

              }

%>

       </table>

 

    <%

              rs.close() ;

              stmt.close() ;

              conn.close() ;

       }

       catch(Exception e)

       {

              out.println(e) ;

       }

%>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值