国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Tomcat中數(shù)據(jù)連接池的配置和相應的javabean
Tomcat中數(shù)據(jù)連接池的配置和相應的javabean

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

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

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

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

     Tomcat 5.Xconf目錄下面找一個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

       {

              //可以設置是否自動提交

              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的時候自動產(chǎn)生

              

       }

       public void valueUnbound(HttpSessionBindingEvent arg0) {

              // TODO Auto-generated method stub

              try {

                     connection.close();

              } catch (SQLException e) {

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

                     e.printStackTrace();

              }

              finally{

                     connection=null;

              }

       }

}

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

       由于數(shù)據(jù)連接池的生命周期是整個應用程序,所以他們的范圍(scope)應該是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>

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java.sql.SQLException: connection holder is null
《深入了解mybatis原理》 Mybatis數(shù)據(jù)源與連接池
IT培訓JAVA例題結果集元數(shù)據(jù)
TOMCAT動態(tài)創(chuàng)建連接池收藏 - - JavaEye技術網(wǎng)站
tomcat dbcp jndi 全局配置
操作數(shù)據(jù)庫類SQLHelp.cs
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服