关于tomcat数据源的配置网上有很多相关的资料,现在我把经过验证的配置方法写下来,一是供大家参考,二来可以总结一下。
我这介绍的是针对tomcat5.5的配置,其他版本我还没试过,不过应该差不多吧,有空再试下。
1》 安装tomcat-admin插件。这个插件的作用是可以引导你通过web的方式去配置数据源,就像weblogic配置数据源一样。这个插件网上有的下,解压后会提供一个admin.xml文件和一个admin文件夹,将admin.xml文件放到%Tomcat_HOME%conf\Catalina\localhost目录下,将admin文件夹放到%Tomcat_HOME%\server\webapps目录下,这样这个插件就安装好了。
2》 启动Tomcat,输入http://localhost:8080/admin进入tomcat的admin配置管理页面,进入后看左边的树形菜单,如图一,点Data Sources进入数据源的配置,在配置栏中输入相应参数(图二),大家根据自己的数据库赶写相应数据库的驱动类和URL,然后按save--->commit changes保存配置。
这一步完成后在%Tomcat_HOME%conf\server.xml中的 <GlobalNamingResources> </GlobalNamingResources>中,tomcat会自动生成以下一段代码:
<Resource
name="jdbc/ipsdb"
type="javax.sql.DataSource"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IPSNET"
maxActive="4"/>
这就是我们刚才配置的数据源。
3》 编辑%Tomcat_HOME%conf\context.xml,在<Context></Context>之间添加以下代码
<Resource
auth="Container"
type="javax.sql.DataSource"
name="jdbc/ipsdb"
description="ipsdb"
username="sa"
password="sa"
maxActive="4"
maxIdle="2"
maxWait="5000"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IPSNET"
/>
注意,这些参数和上一步配置的数据源参数要一定相同,否则就会出错。网上的资料都忽略了这一步,直接去配置web.xml文件了。
4》 配置应用目录下的web.xml文件。在<web-app></web-app>之间加入以下代码:
<resource-ref>
<description>ipsdb</description>
<res-ref-name>jdbc/ipsdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意,jdbc/ipsdb是jndi名,一定要和上面的一致。到这里我们的配置工作就完成了,现在可以重启你的猫,进行测试了。在测试之前,大家可以进入admin管理页面看看,我们刚配置的数据源是全局的,即所有的应用都可以用的,在树形菜单的Service-->Host(Localhost)下的任意节点,都可以看到我们所配置的数据源(如图三)。
5》测试,测试的jsp代码我是在网上找的,大家也可以通过写一个类来测试,在测试之前,请确保将数据库的驱动jar包放到%Tomcat_HOME%\webapps\你的应用目录\WEB-INF\lib目录下和%Tomcat_HOME%common\lib目录下。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'testPool.jsp' starting page</title>
<meta http-equiv="pragma" c>
<meta http-equiv="cache-control" c>
<meta http-equiv="expires" c>
<meta http-equiv="keywords" c>
<meta http-equiv="description" c>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<%
Connection c;
Context initCtx=new InitialContext();
Context ctx=(Context)initCtx.lookup("java:comp/env");
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("jdbc/SQL");
c.getConnection();
Statement stmt=conn.createStatement();
PreparedStatement ps=conn.prepareStatement("select * from USERS");
ResultSet rs=ps.executeQuery();
while(rs.next()){
out.println(rs.getString(1)+"<br>");
}
rs.close();
stmt.close();
out.println("ok");
%>
</body>
</html>
我的测试结果为:
This is my JSP page.
admin
ok
测试成功!