小编最近在学习DRP的项目中有要求配置连接池的概念所以来讲解一下。。。
【tomcat7配置管理(Administrator Tool)页面 】
tomcat7配置管理(Administrator Tool)页面的以下内容做了部分修改。想通过Tomcat配置连接池,发现Tomcat 7.0已将DBCP集成到lib文件夹下,因此省去一步;Tomcat7.0和5.5有一些不同之处,配置的方式也就不同,想通过图形界面配置连接池,那么还需要手动配置一些信息,下面进入正题:
下载Administration Web Application,是5.5版本的,Version7.0是没有的,然后解压。
(1).将解压缩包里apache-tomcat-5.5.35\server\webapps下的admin全部拷贝到你安装的tomcat根目下的webapps\里面;
(2).将解压缩包里apache-tomcat-5.5.35\conf\Catalina\localhost下的文件admin.xml拷贝到你安装的tomcat根目下的conf\Catalina\localhost文件夹里面,再将拷贝过去的admin.xml打开,将其中的
<Context docBase="${catalina.home}/server/webapps/admin" privileged="true" antiResourceLocking="false" antiJARLocking="false" useHttpOnly="true">
修改为:
<Context docBase="${catalina.home}/webapps/admin" privileged="true" antiResourceLocking="false" antiJARLocking="false" useHttpOnly="true">
做完上述之后,启动tomcat会报错,是因为我们还需要两个文件:commons-modeler-2.0.1和commons-logging-1.1.1-bin,下载这两个文件,解压后分别将其中的commons-modeler-2.0.1.jar、commons-logging-1.1.1.jar拷贝到tomcat根目录下的lib文件夹内。
(3).配置登录用户:
进 入admin的用户名和密码在tomcat安装目录下的conf\tomcat-users.xml中修改。
首先要添加<role rolename="manager-gui"/> 和<role rolename="admin"/>
再添加<user username="admin" password="admin" roles="manager-gui,admin"/>
再启动tomcat,打开:localhost:8080\admin,输入用户名和密码都为admin ,这是就能正常进入了。完成之后点击 save -Commit Changes
【配置连接池】
生成的servle.xml文件,把文件中的代码:
<Resource
name="jdbc/drp"
type="javax.sql.DataSource"
password="***" //oracle 数据库密码
driverClassName="oracle.jdbc.driver.OracleDriver" //数据库连接的driver
maxIdle="2" //最大空闲连接
maxWait="5000" //最大等待数 5000s
username="***" //oracle 数据库用户名
url="jdbc:oracle:thin:@localhost:1521:bjpowernode" //连接的数据库名称
maxActive="4"/> //最大激活连接
复制到context.xml文件中,再把context.xml剪切的drp1.0/WebRoot/META-INF目录下。最后删除servle.xml文件.
【代码中引用连接池】
代码:
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//new DBCP....
Context ctx = new InitialContext();
//通过JNDI查找DataSource
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/drp");
conn = ds.getConnection();
pstmt = conn.prepareStatement("select * from t_user");
rs = pstmt.executeQuery();
while (rs.next()) {
out.println(rs.getString("user_id") + ", " + rs.getString("user_name"));
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if (rs != null) {rs.close();}
if (pstmt != null) {pstmt.close();}
//if (conn != null) {
//将Connection放到连接池中
// conn.close();
//}
}
显示结果: