隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網站

          搜索

          •  

          最新評論

          本文以Weblogic 5.1+mysql 為例向大家介紹weblogic提供的POOL,
          我分別寫了兩個 servlet 作為對照的例子,一個是用 mysql 提供的JDBC來直接存取MYSQL,
          另一個是weblogic提供的POOL來存取數據庫。
          首先請看用 mysql 提供的JDBC來直接存取MYSQL的代碼:

          myjdbc.java
          -----------------------------------------------------------------------------
          import java.io.*;
          import java.sql.*;
          import weblogic.db.jdbc.*;
          import java.util.Properties;
          import javax.servlet.*;
          import javax.servlet.http.*;


          public class myjdbc extends HttpServlet {

          public void service(HttpServletRequest req, HttpServletResponse res)
          throws IOException
          {

          res.setContentType("text/html");

          PrintWriter out = res.getWriter();
          out.println("<html><head><title>Hello World!</title></head>");
          out.println("<body><h1>TEST JDBC!</h1><pre>");

          Connection Conn = null;

          try {

          //=================================================================================
          Class.forName("org.gjt.mm.mysql.Driver").newInstance();
          Conn = DriverManager.getConnection("jdbc:mysql://localhost/zjws?user=zjxyz&password=xyz");
          //=================================================================================

          Statement Stmt = Conn.createStatement();
          ResultSet RS = Stmt.executeQuery("SELECT * from users");


          while (RS.next()) {

          out.println(RS.getString("userid")+"\t"
          +RS.getString("passwd")
          +"\t"+RS.getString("name"));
          }

          RS.close();
          Stmt.close();
          Conn.close();

          }catch (Exception E) {
          System.err.println("Unable to load driver.");
          E.printStackTrace();
          }

          out.println("</pre></body></html>");
          }

          }

          上面的代碼功能是把mysql 的 zjws數據庫里面 users 表列出來,我把裝入JDBC驅動的語句做了標記
          下面是利用POOL讀取數據庫,裝入JDBC驅動的語句我也做了標記,請仔細比較。

          首先是要配置好服務器,在weblogic.properties加入,

          #=====================================================

          weblogic.jdbc.connectionPool.mysqlPool1=\
          url=jdbc:mysql://localhost/zjws?user=zjxyz,\
          driver=org.gjt.mm.mysql.Driver,\
          loginDelaySecs=1,\
          initialCapacity=4,\
          maxCapacity=10,\
          capacityIncrement=2,\
          allowShrinking=true,\
          shrinkPeriodMins=15,\
          refreshMinutes=10,\
          allow=guest,\
          props=user=zjxyz;password=xyz;server=zjxyz


          #=====================================================

          把mysql 的JDBC驅動放在 /weblogic/myserver/serverclasses/ 目錄下,不知為何,
          我把jar包把放在其目錄下,把路徑加入 classpath 中,結果啟動時說找不到class,
          所以我只好解開的org目錄及其里面的文件放進去,結果可以了。

          mysql一定要比weblogic先啟動,因為weblogic在啟動時要創建POOL。


          mysqlpool.java
          --------------------------------------------------------------------------------------------------
          import java.io.*;
          import java.sql.*;
          import weblogic.db.jdbc.*;
          import java.util.Properties;
          import javax.servlet.*;
          import javax.servlet.http.*;


          public class mysqlpool extends HttpServlet {

          public void service(HttpServletRequest req, HttpServletResponse res)
          throws IOException
          {

          res.setContentType("text/html");

          PrintWriter out = res.getWriter();
          out.println("<html><head><title>Hello World!</title></head>");
          out.println("<body><h1>TEST Weblogic Pool!</h1><pre>");

          Connection Conn = null;

          try {
          //=================================================================================
          Properties props =new Properties();

          props.setProperty("user", "system");
          props.setProperty("password", "zjxyzken");

          Driver myDriver =
          (Driver) Class.forName("weblogic.jdbc.pool.Driver").newInstance();

          Conn = myDriver.connect("jdbc:weblogic:pool:mysqlPool1",props);
          //=================================================================================

          Statement Stmt = Conn.createStatement();
          ResultSet RS = Stmt.executeQuery("SELECT * from users");

          while (RS.next()) {

          out.println(RS.getString("userid")+"\t"
          +RS.getString("passwd")
          +"\t"+RS.getString("name"));
          }

          RS.close();
          Stmt.close();
          Conn.close();

          }catch (Exception E) {
          System.err.println("Unable to load driver.");
          E.printStackTrace();
          }

          out.println("</pre></body></html>");
          }

          }

          經過閱讀源代碼,我們可以發現,作為程序員某定程度上根本不需要理會服務器裝的是什么SQL數據庫,
          只需連接到weblogic創建提供的POOL就可以了,這樣一來除了可以提高效率外還令到代碼的可重用性大大提高。



          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-02-22 14:38 小尋 閱讀(558) 評論(0)  編輯  收藏 所屬分類: j2se/j2ee/j2medatabase
          主站蜘蛛池模板: 抚顺市| 长海县| 阆中市| 彭泽县| 五寨县| 大姚县| 卓尼县| 河南省| 阆中市| 疏勒县| 鲜城| 望江县| 马鞍山市| 武隆县| 格尔木市| 湘潭县| 华池县| 城步| 册亨县| 汽车| 稷山县| 新疆| 海林市| 鸡泽县| 吉隆县| 临澧县| 白山市| 紫阳县| 平塘县| 如皋市| 喀什市| 贵定县| 万年县| 历史| 泰和县| 龙陵县| 巴楚县| 卓资县| 郴州市| 常德市| 徐闻县|