您的位置:首页 > 运维架构 > Tomcat

Tomcat6.0 连接池的配置

2011-07-11 15:31 423 查看
1.本人当前使用的Tomcat版本为:6.0,oracle为稳定的10g版本
2.下文为方便起见,依习惯以%Tomcat_Home%表示Tomcat安装的目录,本人安装目录为“D:\Tomcat 6.0”
配置步骤如下:
1.Tomcat 6的配置和以前的不同了,不推荐在server.xml中进行配置,而是在%Tomcat_Home%\webapps\yourApp\META-INF \context.xml中进行配置才是更好的方法。而不是以前版本%Tomcat_Home%\conf下的context.xml文件。这样就可以在不同的web应用下单独配置连接池了,且Tomcat会自动重载。当然你也可以更改%Tomcat_Home%\conf下的context.xml文件,将所有web应用下的连接池进行统一配置。
2.将代码修改如下:
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<Resource name="jdbc/OracleDB" auth="Container" type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="psun"
password="psun"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:ORA"/>

</Context>
name 为当前数据源JNDI的名字,可以随意设定;
auth 为验证方式;
type 资源类型;
driverClassName 为Oracle驱动引用;
maxActiv 为连接池最大激活的连接数,设为0表示无限制;
maxIdle 为连接池最大空闲的连接数,数据库连接的最大空闲时间。超过空闲时间,
数据库连接将被标记为不可用,然后被释放。设为0表示无限制;
maxWait 为连接最大的等待时间,单位毫秒,如果超过此时间将接到异常。设为-1
表示无限制。;
username 为oracle数据库的一个用户名;
password 为username的密码;
url 为连接oracle的连接地址;

3.在程序中的调用形式为:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.*, javax.sql.*, com.sp.db.*, javax.naming.*;" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>

<body>
This is my JSP page. <br><hr/>

<%
InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/OracleDB");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from students");
while(rs.next()){
//System.out.println(rs.getString(2));
out.print(rs.getString(2));
out.print("<br>");
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
注:“java:comp/env/jdbc/OracleDB”红色标记文字为步骤1里设置的Resource name。
java:comp/env 为固定开头
4.另外还需将用到的jdbc驱动类库导入到%Tomcat_Home%\lib目录下
否则会抛出如下异常:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
依上述步骤就能成功的配置Tomcat6.0 连接池,如果还不行,配置一下 web.xml。
在web.xml文件中的web-app节点下加入如下代码形式:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
启动tomcat,成功运行,呵呵



---------------------------------------------------------------------------
把tomcat拷贝到那台机器,并且修改META-INF\context.xml,然后重新启动tomcat,但发现系统连接的仍然是老的db。再次检查了META-INF\context.xml文件,确信了这个文件已经正确设置db连接了,这也说明这个文件并没有真正起作用。查看了tomcat下conf\context.xml也没有设置db的连接池。那是哪个文件在起作用呢?折腾了办法,后来发现tomcat在conf\Catalina\localhost下生成了一个和原来META-INF\context.xml相同内容的文件,怀疑一定是这个文件在起作用?删除conf\Catalina\localhost目录,重启tomcat,问题消失。
参考【http://www.blogjava.net/gm_jing/articles/308828.html】的blog
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: