萧秋水的博客


带着淡淡的倦意,轻轻的忧惺,宛若远山含笑迷蒙,但又如闪电惊雷般震人心魄……

如何在TOMCAT配置数据源,调用数据源

1、在TOMCAT里配置数据源,在<host></host>之间加上下面的代码,具体的参数根据自己情况修改
   <Context path="" docBase="E:\WEB_CODE\DEMO\WEB" debug="0">
   
   <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_xzm_log." suffix=".txt"
           timestamp="true"/>

          <Environment name="maxExemptions" type="java.lang.Integer"
                      value="15"/>
          <Parameter name="context.param.name" value="context.param.value"
                     override="false"/>         
         
          <Resource name="jdbc/tzwdb" auth="Container"
                    type="oracle.jdbc.pool.OracleDataSource"/>
          <ResourceParams name="jdbc/tzwdb">
            <parameter><name>factory</name><value>oracle.jdbc.pool.OracleDataSourceFactory</value></parameter>           
            <parameter><name>driverClassName</name><value>oracle.jdbc.driver.OracleDriver</value></parameter>
            <parameter><name>url</name><value>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</value></parameter>
            <parameter><name>username</name><value>demo</value></parameter>
            <parameter><name>password</name><value>demo</value></parameter>
            <parameter><name>serverName</name><value>127.0.0.1</value></parameter>           
            <parameter><name>databaseName</name><value>ORCL</value></parameter>           
            <parameter><name>portNumber</name><value>1521</value></parameter>
            <parameter><name>maxActive</name><value>30</value></parameter>
            <parameter><name>maxIdle</name><value>10</value></parameter>
            <parameter><name>maxWait</name><value>500</value></parameter>           
            <parameter><name>description</name><value>oracle</value></parameter>           
          </ResourceParams>
           
          <Resource name="mail/Session" auth="Container"
                    type="javax.mail.Session"/>
          <ResourceParams name="mail/session">
            <parameter>
              <name>mail.smtp.host</name>
              <value>localhost</value>
            </parameter>
          </ResourceParams>
   
   </Context>

2、连接数据库

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import org.apache.log4j.Logger;

/**
 * @author : 萧秋水
 *
 * @contact me :
cnyanhai@hotmail.com
 *
 */
public class DBManager {


    static Logger logger = Logger.getLogger(DBManager.class.getClass());

    private Context initCtx = null;

    private Context ctx = null;

    private DataSource ds = null;

    private long timeout = 5000;

    private Statement theStatement = null;

    private PreparedStatement thePstmt = null;

    private static final String userName = "tzw";

    private static final String password = "ywsoft";

    /***************************************************************************
     *
     * 初试化initCtx
     *
     * 取得数据源对象
     * 
     **************************************************************************/

    public DBManager() {
        try {
            initCtx = new InitialContext();
            //init context,read config web.xml
            if (initCtx == null) {
                throw new Exception("Initial Failed!");
            }
            ctx = (Context) initCtx.lookup("java:comp/env");
            //find "jdbc/tzwdb" object this configruation in the SERVER.XML of
            // Tomcat
            if (ctx != null) {
                ds = (DataSource) ctx.lookup("jdbc/tzwdb");
            }
            if (ds == null) {
                throw new Exception("Look up DataSource Failed!");
            }
        } catch (Exception e) {
            logger.error("Look up DataSource error! -- " + e.getMessage());
        }
    }

    /***************************************************************************
     *
     * get Connection
     *
     * @return Connection
     * 
     **************************************************************************/

    public synchronized Connection getConnection() {
        //get connection and set to delay time
        long startTime = new java.util.Date().getTime();
        Connection con = null;
        while (con == null) {
            con = newConnection();
            if (con != null) {
                logger.info("Create New Connection!");
                break;
            }
            try {
                logger.info("Connection timeout,Please wait " + timeout + "ms");
                wait(timeout);
            } catch (InterruptedException e) {
                logger.warn("Connection timeout! -- " + e.getMessage());
            }
            if ((new java.util.Date().getTime() - startTime) >= timeout) {
                logger.warn("Connection timeout!");
                break;
            }
        }
        return con;
    }

    private Connection newConnection() {
        Connection con = null;
        try {
            con = ds.getConnection(userName, password);
            if (con == null) {
                throw new Exception("Create Connection Failed!");
            }
        } catch (Exception e) {
            logger.warn("Create Connection Failed! -- " + e.getMessage());
        }
        return con;
    }

    /***************************************************************************
     *
     * release the connection
     * 
     **************************************************************************/

    public synchronized void freeConnection(Connection conn, PreparedStatement pstmt) {
        try {
            //close PreparedStatement
            if (pstmt != null) {
                pstmt.close();
                pstmt = null;
            }
        } catch (Exception e) {
            logger.warn("release stmt,pstmt error! -- " + e.getMessage());
        }
        try {
            //close Connection
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            logger.warn("release conn error! -- " + e.getMessage());
        }
    }

}
  

posted on 2006-08-15 16:03 萧秋水 阅读(382) 评论(0)  编辑  收藏 所属分类: JSP&SERVLET


只有注册用户登录后才能发表评论。


网站导航: