给出一个tomcat5配置 常见数据库连接池的例子.
环境: w2kp sp4,   jsdk1.4.2_8; tomcat5. 0.2.8; oracle817, sqlserver2000 sp3 , mysql5 beta
     总的来说在tomcat配置一个数据源有4项工作要做.
     1. 在server.xml 里配置数据源连接池参数。 可以手动,也可以通过tomcat admin工具。
   2. 在 %CATALINA_HOME%\conf\Catalina\localhost\ 下 ,对用你自己的webapp用户
   yourapp.xml 配置对数据源的声明.
     3. 在自定义的webapp 下WEB-INFO\web.xml 下配置对数据源的引用。
   4. 在特定数据库的jdbc 驱动copy 到%CATALINA_HOME%\common\lib\ 下
     其他应用服务器可能要配置classpath 等.
     oracle 数据源配置.
     1.进入 http://localhost:8080/admin/   conf文件夹下的tomcat-users.xml有管理员的用户名密码等信息。
     选择Resources-Data sources进入配置数据源界面,选择Data Source Actions ->选择Create New Data Source,进入配置详细信息界面,内容如下:
         JNDI Name:     jdbc/oracle            
             Data Source URL:   jdbc:oracle:thin:@192.168. 0.18:1521:oradb
             JDBC Driver Class:   oracle.jdbc.driver.OracleDriver
             User Name:     oraconn
             Password:     oraconn            
             Max. Active Connections:     20
             Max. Idle Connections:     10
             Max. Wait for Connection:     5000
             Validation Query:  
             其中oradb 是oracle数据库的SID. oraconn 为oracle可用的用户名密码.
        
       2.进入%TOMCAT_HOME%\conf\Catalina\localhost下,找到你的web应用对应的.xml文件(下面有我的web的目录结构),如     test.xml,并在此文件的下添入代码:
<ResourceLink name=”jdbc/oracle” global=”jdbc/oracle” type=”javax.sql.DataSourcer”/>
           3、   修改web.xml和%TOMCAT_HOME%\conf\Catalina\localhost下对应你的引用的配置文件
打开%TOMCAT_HOME%\conf\web.xml,在</web-app>的前面添加以下内容:
       <resource-ref>
     <description>oraDB Connection</description>
     <res-ref-name>jdbc/ora</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
       </resource-ref>
     注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。
  
     4. 在%oracle_home%\ora81\jdbc\lib 下有一个classes12.zip, 和nls_charset12.zip
       把这两个文件解压的一个临时目录下例如d:\work\temp\classes12   和     d:\work\temp\nls_charset12  
     进入这两个目录   d:> cd work\temp\classes12  
           用   jar -cvf classes12.jar * 创建classes12.jar 同样创建 nls_cahrset12.jar
     把这两个jar文件copy 到   %tomcat_home% \common\lib 下。
     oracle 数据库配置完毕。
     sqlserver2000    
       1.进入 http://localhost:8080/admin/   conf文件夹下的tomcat-users.xml有管理员的用户名密码等信息。
     选择Resources-Data sources进入配置数据源界面,选择Data Source Actions ->选择Create New Data Source,进入配置详细信息界面,内容如下:
         JNDI Name:     jdbc/sqlserver      
             Data Source URL:   jdbc:microsoft:sqlserver://192.168. 0.18:1433;DatabaseName=sqldb
             JDBC Driver Class:   com.microsoft.jdbc.sqlserver.SQLServerDriver
             User Name:     sqlconn
             Password:     sqlconn            
             Max. Active Connections:     20
             Max. Idle Connections:     10
             Max. Wait for Connection:     5000
             Validation Query:  
             其中sqldb 是sqldb数据库名称. sqlconn 为sqlserver可用的用户名密码.
        
       2.进入%TOMCAT_HOME%\conf\Catalina\localhost下,找到你的web应用对应的.xml文件(下面有我的web的目录结构),如     test.xml,并在此文件的下添入代码:
<ResourceLink name=”jdbc/sqlserver” global=”jdbc/sqlserver” type=”javax.sql.DataSourcer”/>
           3、   修改web.xml和%TOMCAT_HOME%\conf\Catalina\localhost下对应你的引用的配置文件
打开%TOMCAT_HOME%\conf\web.xml,在</web-app>的前面添加以下内容:
       <resource-ref>
     <description>sqlserverDB Connection</description>
     <res-ref-name>jdbc/sqlserver</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
       </resource-ref>
     注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。
  
     4.   下载sqlserver2000 jdbc 驱动 http://download.microsoft.com/download/SQLSVR2000/Install/2.2.0022/UNIX/EN-US/mssqlserver.tar
     解压后找到如下jar包 msbase.jar , mssqlserver.jar, msutil.jar
     把这3个jar包copy 到   %tomcat_home% \common\lib 下。
  
     sqlserver 配置完毕
mysql5 beta 数据源配置
             1.进入 http://localhost:8080/admin/   conf文件夹下的tomcat-users.xml有管理员的用户名密码等信息。
     选择Resources-Data sources进入配置数据源界面,选择Data Source Actions ->选择Create New Data Source,进入配置详细信息界面,内容如下:
         JNDI Name:     jdbc/mysql
             Data Source URL:   jdbc:mysql://192.168. 0.18/mysqldb
             JDBC Driver Class:   com.mysql.jdbc.Driver
             User Name:     mysqlconn
             Password:     mysqlconn            
             Max. Active Connections:     20
             Max. Idle Connections:     10
             Max. Wait for Connection:     5000
             Validation Query:  
             其中sqldb 是sqldb数据库名称. mysqlconn 为sqlserver可用的用户名密码.
        
       2.进入%TOMCAT_HOME%\conf\Catalina\localhost下,找到你的web应用对应的.xml文件(下面有我的web的目录结构),如     test.xml,并在此文件的下添入代码:
<ResourceLink name=”jdbc/mysql” global=”jdbc/mysql” type=”javax.sql.DataSourcer”/>
           3、   修改web.xml和%TOMCAT_HOME%\conf\Catalina\localhost下对应你的引用的配置文件
打开%TOMCAT_HOME%\conf\web.xml,在</web-app>的前面添加以下内容:
       <resource-ref>
     <description>mysqlDB Connection</description>
     <res-ref-name>jdbc/sqlmysql</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
       </resource-ref>
     注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。
  
     4.   下载mysql jdbc 驱动   mysql-connector-java-3.1.9.zip
    
     解压后找到如下jar包 mysql-connector-java-3.1.9-bin.jar
     这个jar包copy 到   %tomcat_home% \common\lib 下。
  
     mysql   配置完毕
    
   这是conf 下 server.xml 文件的配置部分
     <GlobalNamingResources>
     <Environment name=”simpleValue” type=”java.lang.Integer” value=”30″/>
     <Resource auth=”Container” description=”User database that can be updated and saved” name=”UserDatabase” type=”org.apache.catalina.UserDatabase”/>
     <Resource name=”jdbc/mysql” type=”javax.sql.DataSource”/>
     <Resource name=”jdbc/oracle” type=”javax.sql.DataSource”/>
     <Resource name=”jdbc/sqlserver” type=”javax.sql.DataSource”/>
     <ResourceParams name=”UserDatabase”>
       <parameter>
         <name>factory</name>
         <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
       </parameter>
       <parameter>
         <name>pathname</name>
         <value>conf/tomcat-users.xml</value>
       </parameter>
     </ResourceParams>
     <ResourceParams name=”jdbc/mysql”>
       <parameter>
         <name>maxWait</name>
         <value>5000</value>
       </parameter>
       <parameter>
         <name>maxActive</name>
         <value>20</value>
       </parameter>
       <parameter>
         <name>password</name>
         <value>mysqlconn</value>
       </parameter>
       <parameter>
         <name>url</name>
         <value>jdbc:mysql://192.168. 0.18/mysqldb</value>
       </parameter>
       <parameter>
         <name>driverClassName</name>
         <value>com.mysql.jdbc.Driver</value>
       </parameter>
       <parameter>
         <name>maxIdle</name>
         <value>10</value>
       </parameter>
       <parameter>
         <name>username</name>
         <value>mysqlconn</value>
       </parameter>
     </ResourceParams>
     <ResourceParams name=”jdbc/oracle”>
       <parameter>
         <name>maxWait</name>
         <value>5000</value>
       </parameter>
       <parameter>
         <name>maxActive</name>
         <value>20</value>
       </parameter>
       <parameter>
         <name>password</name>
         <value>oraconn</value>
       </parameter>
       <parameter>
         <name>url</name>
         <value>jdbc:oracle:thin:@192.168. 0.18:1521:oradb</value>
       </parameter>
       <parameter>
         <name>driverClassName</name>
         <value>oracle.jdbc.driver.OracleDriver</value>
       </parameter>
       <parameter>
         <name>maxIdle</name>
         <value>10</value>
       </parameter>
       <parameter>
         <name>username</name>
         <value>oraconn</value>
       </parameter>
     </ResourceParams>
     <ResourceParams name=”jdbc/sqlserver”>
       <parameter>
         <name>maxWait</name>
         <value>5000</value>
       </parameter>
       <parameter>
         <name>maxActive</name>
         <value>20</value>
       </parameter>
       <parameter>
         <name>password</name>
         <value>sqlconn</value>
       </parameter>
       <parameter>
         <name>url</name>
         <value>jdbc:microsoft:sqlserver://192.168. 0.18:1433;DatabaseName=sqldb</value>
       </parameter>
       <parameter>
         <name>driverClassName</name>
         <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </parameter>
       <parameter>
         <name>maxIdle</name>
         <value>10</value>
       </parameter>
       <parameter>
         <name>username</name>
         <value>sqlconn</value>
       </parameter>
     </ResourceParams>
   </GlobalNamingResources>
   其中192.168. 0.18为数据库服务器IP
.  
   下面是 %CATALINA_HOME%\conf\Catalina\localhost 对应的 xml 文件。   我的应用是test.xml
     <?xml version=’1. 0′ encoding=’utf-8′?>
<Context displayName=”My Web Application” docBase=”test” path=”/test” workDir=”work\Catalina\localhost\test”>
   <ResourceLink global=”jdbc/mysql” name=”jdbc/mysql” type=”javax.sql.DataSourcer”/>
   <ResourceLink global=”jdbc/sqlserver” name=”jdbc/sqlserver” type=”javax.sql.DataSourcer”/>
   <ResourceLink global=”jdbc/oracle” name=”jdbc/oracle” type=”javax.sql.DataSourcer”/>
</Context>
   以下是test webapp 下的WEB-INFO web.xml文件
<?xml version=”1. 0″ encoding=”ISO-8859-1″?>
<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app>
<display-name>My Web Application</display-name>
<description>
         A application for test.
</description>
<!–Mysql Database Config start –>
<resource-ref>
     <description>mysqlDB Connection</description>
     <res-ref-name>jdbc/mysql</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>
<!– Mysql Database Config end –>
<!– Sqlserver Database Config start –>
<resource-ref>
         <description>sqlserverDB Connection</description>
         <res-ref-name>jdbc/sqlserver</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
</resource-ref>
<!– Sqlserver Database Config end –>
<!– oracle Database Config start –>
<resource-ref>
     <description>oracleDB Connection</description>
     <res-ref-name>jdbc/oracle</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>
<!– oracle Database Config end –>
   <!– Example filter to set character encoding on each request –>
     <filter>
         <filter-name>Set Character Encoding</filter-name>
         <filter-class>filters.SetCharacterEncodingFilter</filter-class>
         <init-param>
             <param-name>encoding</param-name>
             <param-value>GB2312</param-value>
         </init-param>
     </filter>
<filter-mapping>
         <filter-name>Set Character Encoding</filter-name>
         <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在oracle   , sqlserver , mysql 建立3个类似的简单表来测试  
mysql
create table test_user
(
   NAME     VARCHAR(50)
)
oracle
create table test_user
(
   NAME     VARCHAR2(50)
)
sqlserver
create table test_user
(
   NAME     VARCHAR(50)
)
ok   配置工作已经完成。让我们写3个JSP来测试。
     testDSoracle.jsp文件
     <%@ page contentType=”text/html;charset=gb2312″ %>
<%@ page import=”java.sql.*”%>
<%@ page import=”javax.sql.*”%>
<%@ page import=”javax.naming.*”%>
<%@ page session=”false” %>
<html>
<head>
<title></title>
<%
   out.print(”我的测试开始”+”<br/>”);
   DataSource ds = null;
   try{
   InitialContext ctx=new InitialContext();
   ds=(DataSource)ctx.lookup(”java:comp/env/jdbc/oracle”);
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
  
   String strSql = ” select * from test_user”;
   ResultSet rs = stmt.executeQuery(strSql);
   while(rs.next()){
       out.print(rs.getString(1)+”<br/>”);                
     }
         rs.close();
         stmt.close();
         conn.close();
out.print(”我的测试结束”);
   }
   catch(Exception ex){
       out.print(”出现例外,信息是:”+ex.getMessage());
     ex.printStackTrace();
   }
%>
</head>
<body>
</body>
</html>
=================================================================================================
     testDSsqlserver.jsp文件
     <%@ page contentType=”text/html;charset=gb2312″ %>
<%@ page import=”java.sql.*”%>
<%@ page import=”javax.sql.*”%>
<%@ page import=”javax.naming.*”%>
<%@ page session=”false” %>
<html>
<head>
<title></title>
<%
   out.print(”我的测试开始”+”<br/>”);
   DataSource ds = null;
   try{
   InitialContext ctx=new InitialContext();
   ds=(DataSource)ctx.lookup(”java:comp/env/jdbc/sqlserver”);
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
  
   String strSql = ” select * from test_user”;
   ResultSet rs = stmt.executeQuery(strSql);
   while(rs.next()){
       out.print(rs.getString(1)+”<br/>”);                
     }
         rs.close();
         stmt.close();
         conn.close();
out.print(”我的测试结束”);
   }
   catch(Exception ex){
       out.print(”出现例外,信息是:”+ex.getMessage());
     ex.printStackTrace();
   }
%>
</head>
<body>
</body>
</html>
=======================================================================================================
     testDSmysql.jsp文件
     <%@ page contentType=”text/html;charset=gb2312″ %>
<%@ page import=”java.sql.*”%>
<%@ page import=”javax.sql.*”%>
<%@ page import=”javax.naming.*”%>
<%@ page session=”false” %>
<html>
<head>
<title></title>
<%
   out.print(”我的测试开始”+”<br/>”);
   DataSource ds = null;
   try{
   InitialContext ctx=new InitialContext();
   ds=(DataSource)ctx.lookup(”java:comp/env/jdbc/mysql”);
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
  
   String strSql = ” select * from test_user”;
   ResultSet rs = stmt.executeQuery(strSql);
   while(rs.next()){
       out.print(rs.getString(1)+”<br/>”);                
     }
         rs.close();
         stmt.close();
         conn.close();
out.print(”我的测试结束”);
   }
   catch(Exception ex){
       out.print(”出现例外,信息是:”+ex.getMessage());
     ex.printStackTrace();
   }
%>
</head>
<body>
</body>
</html>