小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Tomcat中數(shù)據(jù)連接池的配置和相應(yīng)的javabean

 昵稱10987 2006-09-08
Tomcat中數(shù)據(jù)連接池的配置和相應(yīng)的javabean

數(shù)據(jù)源Data Source)為了減少數(shù)據(jù)庫的連接信息和一些邏輯名稱寫在JSP的源代碼中,JDBC2.0提供的一個(gè)接口叫做DataSource

       連接池Connection Pool)對于應(yīng)用程序來說為了防止應(yīng)用程序多次連接和斷開數(shù)據(jù)庫所耗費(fèi)的時(shí)間和資源,可采用數(shù)據(jù)連接池的方式減少資源的消耗。即一次向數(shù)據(jù)庫請求很多的connection。存儲(chǔ)在一個(gè)Pool中,讓需要的人從吃重取得Connection,等到用完了后在放回到數(shù)據(jù)池中。這樣提供了一個(gè)緩沖區(qū),讓JSP和數(shù)據(jù)庫之間得到最大的執(zhí)行效率。

       JNDIJava Naming and Directory Interface)提供一個(gè)接口是用戶可在不知道資源所在位置的情形之下獲得服務(wù)。

5.2.3 Tomcat5.X數(shù)據(jù)連接池配置:

     Tomcat 5.Xconf目錄下面找一個(gè)server.xml文件在里面配置數(shù)據(jù)連接池。在文件里面加入如下編碼:

<Host name="localhost" appBase="webapps"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

<Context path="/TollSystemModel" docBase="TollSystemModel" debug="0"

reloadable="true" crossContext="true">

               <Resource name="jdbc/TollSystemModel" auth="Container"

type="javax.sql.DataSource"

   driverClassName="org.gjt.mm.mysql.Driver"    

maxIdle="30"

       maxWait="1000"

       username="root"

          password="hacker"

                        url="jdbc:mysql://localhost:3306/toll_system"

maxActive="4"

autoReconnect="true"/>

        </Context>

</Host>

說明:TollSystemModel是你的war包名稱或者是你在webapps/創(chuàng)建的目錄名稱
jdbc/TollSystemModel中的TollSystemModel是連接數(shù)據(jù)源名稱
toll_system是數(shù)據(jù)庫名稱

5.2.4 開發(fā)數(shù)據(jù)源的JavaBean。

下面是用來開發(fā)數(shù)據(jù)源的JavaBean。即ConnectionBean.java。利用JNDI獲取數(shù)據(jù)源,等待用戶使用。

package ConnectDatabaseBean;

import java.sql.Connection;

import java.sql.SQLException;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

public class ConnectionBean {

       private DataSource ds=null;

       public ConnectionBean()

       {

//通過JNDI獲得數(shù)據(jù)源

              

              try {

                     InitialContext ctx=null;

                     ctx = new InitialContext();

                     ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TollSystemModel");

              } catch (NamingException e) {

                     e.printStackTrace();

              }

              

              

       }

      

       public Connection getConnection()

       {

              //獲取連接

              try{

                     return ds.getConnection();

              }

              catch(SQLException sqle)

              {

                     System.err.println("cant‘t get Connection from data source");

                     sqle.printStackTrace();

                     return null;

              }

       }

}

5.2.4 封裝的SQL方法的JavaBean

下面是封裝的數(shù)據(jù)庫操作的一些方法。即ConnectionHold.java,自行定義了一些transaction和執(zhí)行的SQL程序代碼,便于管理。

package ConnectDatabaseBean;

import java.sql.*;

import javax.servlet.http.HttpSessionBindingEvent;

import javax.servlet.http.HttpSessionBindingListener;

public class ConnectionHolder implements HttpSessionBindingListener{

       private Connection connection=null;

       private Statement stmt=null;

              public ConnectionHolder(){

                     }

              public void commit() throws SQLException{

              connection.commit();

       }

              public ResultSet executeQuery(String sql) throws ClassNotFoundException, SQLException, Exception

       {

              return stmt.executeQuery(sql);

       }

              public int executeUpdate(String sql) throws ClassNotFoundException, SQLException, Exception

       {

              return stmt.executeUpdate(sql);

       }

              public void rollBack() throws ClassNotFoundException, SQLException, Exception

       {

              connection.rollback();

       }

              public void setAutoCommit(boolean ifAuto) throws SQLException

       {

              //可以設(shè)置是否自動(dòng)提交

              connection.setAutoCommit(ifAuto);

       }

       public void setConnection(Connection holdone)

       {

              connection=holdone;

              try

              {

                     stmt=connection.createStatement();

              }

              catch(SQLException sqle)

              {

                     stmt=null;

              }

       }

       public void valueBound(HttpSessionBindingEvent arg0) {

              if(connection==null)

                     System.err.println("Didn‘t get Connection from Data Source!");

              // 加入session的時(shí)候自動(dòng)產(chǎn)生

              

       }

       public void valueUnbound(HttpSessionBindingEvent arg0) {

              // TODO Auto-generated method stub

              try {

                     connection.close();

              } catch (SQLException e) {

                     // session注銷時(shí)候調(diào)用,把連接放入池中

                     e.printStackTrace();

              }

              finally{

                     connection=null;

              }

       }

}

5.2.5 Jsp中如何運(yùn)用數(shù)據(jù)源

       由于數(shù)據(jù)連接池的生命周期是整個(gè)應(yīng)用程序,所以他們的范圍(scope)應(yīng)該是application

下面是Jsp中如何引入連接池。

<jsp:useBean id="connectPool" class="ConnectDatabaseBean.ConnectionBean"  scope="application"/>

<jsp:useBean id="connection" class="ConnectDatabaseBean.ConnectionHolder" scope="session">

<jsp:setProperty name="connection" property="connection" value=‘<%=connectPool.getConnection() %>‘/>

</jsp:useBean>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多