Tomcat5數據源配置(轉載)

給出一個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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章