tomcat配置私有数据源

Tomcat

   可以在两个位置配置JNDI
1. $CATALINA_HOME/conf/server.xml
,在这个文件里的是全局的,对所有应用可见;
2.
对于Tomcat5.5以上版本,可以在web应用的context XML文件(META-INF/context.xml)中配置私有数据源,只对这个web应用可见。
大家都知道第一个位置,第二个不熟悉,看看下面的目录结构:

   1.
应用目录-- 
   2.             --WEB-INF/web.xml 
   3.             --META_INF/context.xml 
   4.             --index.jsp 


一个context.xml 文件的例子:

  --------------------------------------mysql-------------------------------------
    <Context debug="0">  
      <Resource name="jdbc/rollerdb" auth="Container"  
           type="javax.sql.DataSource"  
          driverClassName="com.mysql.jdbc.Driver"  
          url="jdbc:mysql://localhost:3306/
数据库?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8"  
           username="
用户
"  
            password="
密码
"  
           maxActive="20"  
           maxIdle="3"  
          removeAbandoned="true"  
       maxWait="3000" />        
   </Context>  

 

 -------------------------------sqlserver2000-------------------------
     <Context debug="0"> 
        <Resource name="jdbc/sqlserver" auth="Container" 
            type="javax.sql.DataSource" 
            driverClassName="net.sourceforge.jtds.jdbc.Driver" 
            url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=waihu" 
            username="sa" 
            password="sa" 
            maxActive="20" 
            maxIdle="3" 
           removeAbandoned="true" 
            maxWait="3000"
          /> 
           <!-- If you want e-mail features, un-comment the section below --> 
           <!-- 
           <Resource name="mail/Session" auth="Container" 
          type="javax.mail.Session" 
          mail.smtp.host="mailhost.example.com" />
           <driver type="net.sourceforge.jtds.jdbc.Driver">
         <url>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=waihu</url>
           --> 
   </Context>

web.xml
资源参考部分的代码:


   1. <!-- Web app resource refs. --> 
   2.    <resource-ref> 
   3.            <res-ref-name>jdbc/rollerdb</res-ref-name> 
   4.            <res-type>javax.sql.DataSource</res-type> 
   5.            <res-auth>Container</res-auth> 
   6.    </resource-ref> 

 

  <resource-ref> 
              <res-ref-name>jdbc/sqlserver</res-ref-name> 
              <res-type>javax.sql.DataSource</res-type> 
              <res-auth>Container</res-auth> 
       </resource-ref>

其中的 jdbc/rollerdb 为数据源的名称,这个可根据自己喜好随意定义,注意,context.xml中定义的要和web.xml的定义一致。

下面是一段示例代码:

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>

<%
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/rollerdb");
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        conn = ds.getConnection();
        stmt = conn.createStatement();
        rs = stmt.executeQuery("SQL
语句
");
//
其它操作

        rs.close();rs=null;
        stmt.close();stmt = null;
        conn.close();conn = null;
    } finally {
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception sqlex) {
            }
            rs = null;
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception sqlex) {
            }
            stmt = null;
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception sqlex) {
            }
            conn = null;
        }
    }
%>

你可能感兴趣的:(tomcat配置私有数据源)