如何在TOMCAT配置數(shù)據(jù)源,調(diào)用數(shù)據(jù)源
1、在TOMCAT里配置數(shù)據(jù)源,在<host></host>之間加上下面的代碼,具體的參數(shù)根據(jù)自己情況修改
???<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、連接數(shù)據(jù)庫
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
???? *
???? * 取得數(shù)據(jù)源對象
???? *?
???? **************************************************************************/
??? 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 @ 2006-01-19 10:04 十三郎 閱讀(1452) | 評論 (0) | 編輯 收藏