无名的博客

2005年12月15日 #

如何在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 @ 2006-01-19 10:04 十三郎 阅读(1443) | 评论 (0)编辑 收藏

在TOMCAT下JSP的中文处理解决方案

方法一:new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK")

方法二:
1、
在jsp中加入下面两行
          <%@ page contentType="text/html; charset=GBK" language="java" %>
          <meta http-equiv="Content-Type" content="text/html; charset=GBK">
2、
在TOMCAT中找到SetCharacterEncodingFilter.java,他们位于D:\Tomcat5.0.27\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里去,并修改包名。
3、
配置WEB.XML,
在web.xml里加入这一段
 <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>utils.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>
4、修改server.xml中两个部分
<Connector port="8090"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URIEncoding='GB2312'/>
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false" protocol="AJP/1.3"
              
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" 
               URIEncoding='GB2312'/>

posted @ 2006-01-09 10:46 十三郎 阅读(229) | 评论 (0)编辑 收藏

一些比较好的javascript

1、window.opener.location.reload();
当A页面弹出B页面时,在B页面如果调用这句js代码,则会刷新A页面。

posted @ 2005-12-23 16:49 十三郎 阅读(411) | 评论 (1)编辑 收藏

异常错误解决办法,不断更新新中......

在用JAVA编写程序时时常会遇到一些异常错误,本人把握以往遇到的异常及其解决办法在此写下来,不断增加,希望其他朋友把自己遇到的一些异常解决方法根贴。

1、 java.sql.SQLException: 操作不允许: Unsupported syntax for refreshRow()
这个异常时在用纯jsp分页时遇到的,在这里会用到absolute(),isAfterLast()等方法,
解决方法:
statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

posted @ 2005-12-15 14:28 十三郎 阅读(493) | 评论 (0)编辑 收藏