posts - 22,comments - 35,trackbacks - 0
          Windows XP的關(guān)機(jī)是由Shutdown.exe程序來控制的,位于Windows\System32文件夾中。如果想讓W(xué)indows 2000也實(shí)現(xiàn)同樣的效果,可以把Shutdown.exe復(fù)制到系統(tǒng)目錄下。

          比如你的電腦要在22:00關(guān)機(jī),可以選擇“開始→運(yùn)行”,輸入“at 22:00 Shutdown -s”,這樣,到了22點(diǎn)電腦就會(huì)出現(xiàn)“系統(tǒng)關(guān)機(jī)”對(duì)話框,默認(rèn)有30秒鐘的倒計(jì)時(shí)并提示你保存工作。如果你想以倒計(jì)時(shí)的方式關(guān)機(jī),可以輸入“Shutdown.exe -s -t 3600”,這里表示60分鐘后自動(dòng)關(guān)機(jī),“3600”代表60分鐘。

          設(shè)置好自動(dòng)關(guān)機(jī)后,如果想取消的話,可以在運(yùn)行中輸入“shutdown -a”。另外輸入“shutdown -i”,則可以打開設(shè)置自動(dòng)關(guān)機(jī)對(duì)話框,對(duì)自動(dòng)關(guān)機(jī)進(jìn)行設(shè)置。

          Shutdown.exe的參數(shù),每個(gè)都具有特定的用途,執(zhí)行每一個(gè)都會(huì)產(chǎn)生不同的效果,比如“-s”就表示關(guān)閉本地計(jì)算機(jī),“-a”表示取消關(guān)機(jī)操作,下面列出了更多參數(shù),大家可以在Shutdown.exe中按需使用。

          ? -f:強(qiáng)行關(guān)閉應(yīng)用程序
            -m:\\計(jì)算機(jī)名:控制遠(yuǎn)程計(jì)算機(jī)
            -i:顯示圖形用戶界面,但必須是Shutdown的第一個(gè)選項(xiàng)
            -l:注銷當(dāng)前用戶
            -r:關(guān)機(jī)并重啟
            -t:時(shí)間:設(shè)置關(guān)機(jī)倒計(jì)時(shí)
            -c:“消息內(nèi)容”:輸入關(guān)機(jī)對(duì)話框中的消息內(nèi)容(不能超127個(gè)字符)
          posted @ 2006-08-07 14:18 kelven 閱讀(426) | 評(píng)論 (0)編輯 收藏
          http://popkart.tiancity.com/homepage/
          posted @ 2006-07-10 13:18 kelven 閱讀(347) | 評(píng)論 (2)編輯 收藏
          1.將數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的JAR文件放在Tomcat的?common/lib?中;
          2.在server.xml中設(shè)置數(shù)據(jù)源,以MySQL數(shù)據(jù)庫(kù)為例,如下:
          在<GlobalNamingResources>?</GlobalNamingResources>節(jié)點(diǎn)中加入,
          ??????<Resource
          ??????name="jdbc/DBPool"
          ??????type="javax.sql.DataSource"
          ??????password="root"
          ??????driverClassName="com.mysql.jdbc.Driver"
          ??????maxIdle="2"
          ??????maxWait="5000"
          ??????username="root"
          ??????url="jdbc:mysql://127.0.0.1:3306/test"
          ??????maxActive="4"/>
          ???屬性說明:name,數(shù)據(jù)源名稱,通常取”jdbc/XXX”的格式;
          ????????????type,”javax.sql.DataSource”;
          ????????????password,數(shù)據(jù)庫(kù)用戶密碼;
          ????????????driveClassName,數(shù)據(jù)庫(kù)驅(qū)動(dòng);
          ????????????maxIdle,最大空閑數(shù),數(shù)據(jù)庫(kù)連接的最大空閑時(shí)間。超過空閑時(shí)間,數(shù)據(jù)庫(kù)連
          ?????????????????????接將被標(biāo)記為不可用,然后被釋放。設(shè)為0表示無(wú)限制。
          ????????????MaxActive,連接池的最大數(shù)據(jù)庫(kù)連接數(shù)。設(shè)為0表示無(wú)限制。
          ????????????maxWait?,最大建立連接等待時(shí)間。如果超過此時(shí)間將接到異常。設(shè)為-1表示
          ?????????????????????無(wú)限制。
          3.在你的web應(yīng)用程序的web.xml中設(shè)置數(shù)據(jù)源參考,如下:
          ??在<web-app></web-app>節(jié)點(diǎn)中加入,
          ??<resource-ref>
          ????<description>MySQL?DB?Connection?Pool</description>
          ????<res-ref-name>jdbc/DBPool</res-ref-name>
          ????<res-type>javax.sql.DataSource</res-type>
          ????<res-auth>Container</res-auth>
          ????<res-sharing-scope>Shareable</res-sharing-scope>
          ?</resource-ref>
          ??子節(jié)點(diǎn)說明:?description,描述信息;
          ???????????????res-ref-name,參考數(shù)據(jù)源名字,同上一步的屬性name;
          ???????????????res-type,資源類型,”javax.sql.DataSource”;
          ???????????????res-auth,”Container”;
          ???????????????res-sharing-scope,”Shareable”;
          4.在web應(yīng)用程序的context.xml中設(shè)置數(shù)據(jù)源鏈接,如下:
          ??在<Context></Context>節(jié)點(diǎn)中加入,
          ??<ResourceLink
          ???name="jdbc/DBPool"?
          ???type="javax.sql.DataSource"?
          ???global="jdbc/DBPool"/>
          ???屬性說明:name,同第2步和第3步的屬性name值,和子節(jié)點(diǎn)res-ref-name值;
          ?????????????type,同樣取”javax.sql.DataSource”;
          ?????????????global,同name值。
          ?
          至此,設(shè)置完成,下面是如何使用數(shù)據(jù)庫(kù)連接池。
          1.建立一個(gè)連接池類,DBPool.java,用來創(chuàng)建連接池,代碼如下:
          import?javax.naming.Context;
          import?javax.naming.InitialContext;
          import?javax.naming.NamingException;
          import?javax.sql.DataSource;

          public?class?DBPool?{
          ????private?static?DataSource?pool;
          ????static?{
          ?????????Context?env?=?null;
          ??????????try?{
          ??????????????env?=?(Context)?new?InitialContext().lookup("java:comp/env");
          ??????????????pool?=?(DataSource)env.lookup("jdbc/DBPool");
          ??????????????if(pool==null)?
          ??????????????????System.err.println("'DBPool'?is?an?unknown?DataSource");
          ???????????????}?catch(NamingException?ne)?{
          ??????????????????ne.printStackTrace();
          ??????????}
          ??????}
          ????public?static?DataSource?getPool()?{
          ????????return?pool;
          ????}
          }

          2.在要用到數(shù)據(jù)庫(kù)操作的類或jsp頁(yè)面中,用DBPool.getPool().getConnection(),獲得一個(gè)Connection對(duì)象,就可以進(jìn)行數(shù)據(jù)庫(kù)操作,最后別忘了對(duì)Connection對(duì)象調(diào)用close()方法,注意:這里不會(huì)關(guān)閉這個(gè)Connection,而是將這個(gè)Connection放回?cái)?shù)據(jù)庫(kù)連接池。
          posted @ 2006-06-14 11:17 kelven 閱讀(931) | 評(píng)論 (0)編輯 收藏

          <%@ page import="java.io.*"%>
          <%
          String root=application.getRealPath("/");
          String fileName=request.getParameter("fileName");
          String filePath=request.getParameter("filePath");

          response.setContentType("application/octet-stream");
          response.setHeader("Content-Disposition",
          "attachment; filename=\"" +fileName+ "\"");

          try{
          java.io.OutputStream os = response.getOutputStream(); //不加此行將只能下載文本文件.下載jpg等就會(huì)出現(xiàn)打不開的現(xiàn)象.
          java.io.FileInputStream fis = new java.io.FileInputStream(root+filePath);
          byte[] b = new byte[1024];
          int i = 0;
          while ( (i = fis.read(b)) > 0 )
          {
          os.write(b, 0, i);
          }

          fis.close();
          os.flush();
          os.close();
          }
          catch ( Exception e )
          {
          System.out.println ( "IOException." + e );
          }
          %>

          java.io.FileInputStream fis = new java.io.FileInputStream(文件的真實(shí)路徑);
          也可以

          <%
          if (request.getParameter("fileUrl") != null)
          {
          String strFileUrl = request.getParameter("fileUrl");

          //獲取文件名(DealFile是自己寫的一個(gè)處理文件的一個(gè)類)
          DealFile dealFile = new DealFile(strFileUrl);
          String filename = dealFile.getFileName();

          response.setHeader("content-type","application/octet-stream");
          response.setHeader("Content-Disposition","attachment;filename=\""+ filename+"\"");

          BufferedInputStream bis = null;
          BufferedOutputStream bos = null;
          try
          {
          //從文件所在目錄以流的方式讀取文件
          bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath(strFileUrl)));

          bos = new BufferedOutputStream(response.getOutputStream());

          byte[] buff = new byte[2048];
          int bytesRead;

          while(-1 != (bytesRead = bis.read(buff, 0, buff.length)))
          {
          bos.write(buff,0,bytesRead);
          }
          bos.flush();
          }
          catch(final IOException e)
          {
          System.out.println ( "IOException." + e );
          }
          finally
          {
          if (bis != null)
          bis.close();
          if (bos != null)
          bos.close();
          }
          return;
          }
          %>

          posted @ 2006-04-14 16:04 kelven 閱讀(1466) | 評(píng)論 (0)編輯 收藏

          [http://www.javaalmanac.com] - Java開發(fā)者年鑒一書的在線版本. 要想快速查到某種Java技巧的用法及示例代碼, 這是一個(gè)不錯(cuò)的去處.
          [http://www.onjava.com] - O'Reilly的Java網(wǎng)站. 每周都有新文章.
          [http://java.sun.com] - 官方的Java開發(fā)者網(wǎng)站 - 每周都有新文章發(fā)表.
          [http://www.developer.com/java] - 由Gamelan.com 維護(hù)的Java技術(shù)文章網(wǎng)站.
          [http://www.java.net] - Sun公司維護(hù)的一個(gè)Java社區(qū)網(wǎng)站.
          [http://www.builder.com] - Cnet的Builder.com網(wǎng)站 - 所有的技術(shù)文章, 以Java為主.
          [http://www.ibm.com/developerworks/java] - IBM的Developerworks技術(shù)網(wǎng)站; 這是其中的Java技術(shù)主頁(yè).
          [http://www.javaworld.com] - 最早的一個(gè)Java站點(diǎn). 每周更新Java技術(shù)文章.
          [http://www.devx.com/java] - DevX維護(hù)的一個(gè)Java技術(shù)文章網(wǎng)站.
          [http://www.fawcette.com/javapro] - JavaPro在線雜志網(wǎng)站.
          [http://www.sys-con.com/java] - Java Developers Journal的在線雜志網(wǎng)站.
          [http://www.javadesktop.org] - 位于Java.net的一個(gè)Java桌面技術(shù)社區(qū)網(wǎng)站.
          [http://www.theserverside.com] - 這是一個(gè)討論所有Java服務(wù)器端技術(shù)的網(wǎng)站.
          [http://www.jars.com] - 提供Java評(píng)論服務(wù). 包括各種framework和應(yīng)用程序.
          [http://www.jguru.com] - 一個(gè)非常棒的采用Q&A形式的Java技術(shù)資源社區(qū).
          [http://www.javaranch.com] - 一個(gè)論壇,得到Java問題答案的地方,初學(xué)者的好去處。
          [http://www.ibiblio.org/javafaq/javafaq.html] - comp.lang.java的FAQ站點(diǎn) - 收集了來自comp.lang.java新聞組的問題和答案的分類目錄.
          http://java.sun.com/docs/books/tutorial/] - 來自SUN公司的官方Java指南 - 對(duì)于了解幾乎所有的java技術(shù)特性非常有幫助.
          http://www.javablogs.com] - 互聯(lián)網(wǎng)上最活躍的一個(gè)Java Blog網(wǎng)站.
          http://java.about.com/] - 來自About.com的Java新聞和技術(shù)文章網(wǎng)站.

          posted @ 2006-04-05 14:03 kelven 閱讀(412) | 評(píng)論 (0)編輯 收藏
          http://www.021123.com/
          posted @ 2006-03-24 14:59 kelven 閱讀(364) | 評(píng)論 (0)編輯 收藏
          1.安裝JDK1.4和jakarta-tomcat-4.1.27.exe。

          ? 路徑分別為 D:\jdk1.4 和 D:\Tomcat 4.1。
          ? 安裝Tomcat 4時(shí),會(huì)要求填寫web訪問端口、用戶名、密碼等信息。
          ? web訪問端口默認(rèn)為8080,用戶名默認(rèn)為admin,密碼自己填寫。

          ? 啟動(dòng)Tomcat4,訪問http://127.0.0.1:8080/ ,就能看到Apache Tomcat/4.1.27的歡迎訪問頁(yè)面,頁(yè)面上有一些相關(guān)介紹信息等。


          2.設(shè)置數(shù)據(jù)庫(kù)的驅(qū)動(dòng)

          ? 以O(shè)racle的JDBC驅(qū)動(dòng)設(shè)置為例:

          ? Oracle8i的驅(qū)動(dòng)在\oracle\ora81\jdbc\lib\目錄下。名字為classes12.zip。

          ? Oracle9i的驅(qū)動(dòng)在\oracle9i\jdbc\lib\目錄下,名字為ojdbc14.jar。

          ? 將這個(gè)文件copy到D:\Tomcat 4.1\common\lib 下。

          ? 注意,如果使用Oracle8i 的驅(qū)動(dòng),則需要在D:\Tomcat 4.1\common\lib 目錄下將classes12.zip更名為classes12.jar,因?yàn)門omcat4不認(rèn)識(shí)zip的后綴名。


          3.設(shè)置Web應(yīng)用。

          ? 新建一個(gè)文件夾,名字為mypool,位置為D:\mypool。這個(gè)D:\mypool路徑將是web應(yīng)用的主目錄。

          ? 打開D:\Tomcat 4.1\conf\server.xml 文件,找到如下行:
          ?
          ? ?<!-- Tomcat Root Context -->
          ? ? ?<!--
          ? ? ? ? ?<Context path="" docBase="ROOT" debug="0"/>
          ? ? ?-->
          ?
          ?
          ? 在這下面,加入如下行:
          ?
          ? <Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

          ?
          ? 完成后,成為這個(gè)樣子:

          ? ? <!-- Tomcat Root Context -->
          ? ? ?<!--
          ? ? ? ? ? <Context path="" docBase="ROOT" debug="0"/>
          ? ? ? -->
          ? ?
          ? ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

          ? 保存D:\Tomcat 4.1\conf\server.xml 文件。

          ? 配置完成后,重新啟動(dòng)Tomcat,就可以這樣訪問這個(gè)web應(yīng)用了: http://127.0.0.1:8080/mypool/


          4.設(shè)置Tomcat的連接池?cái)?shù)據(jù)源。

          ? 訪問 http://127.0.0.1:8080/admin 頁(yè)面,用剛才安裝 Tomcat4 時(shí)填寫的用戶名和密碼登錄。

          ? 登錄成功后,會(huì)出現(xiàn)Tomcat 的web應(yīng)用管理界面(Tomcat Web Server Administration Tool)。

          ? 然后在左邊的目錄樹點(diǎn)擊“Data Sources”項(xiàng),右邊可以看到JNDI配置的頁(yè)面。
          ?
          ? 在右上角的下拉框中選擇“Create New Data Source”,接下來填寫配置信息:
          ?
          ? JNDI Name: jdbc/myOrcl ?
          ? Data Source URL: jdbc:oracle:thin:@192.168.6.40:1521:dbserver
          ? JDBC Driver Class: oracle.jdbc.driver.OracleDriver
          ? User Name: myname
          ? Password: mypassword
          ? Max. Active Connections: ?可用默認(rèn)值
          ? Max. Idle Connections: ? ?可用默認(rèn)值
          ? Max. Wait for Connection: 可用默認(rèn)值
          ? Validation Query: 可不填寫。

          ? 然后,按下“save”按鈕保存。
          ? 再按下“Commit Changes”按鈕將配置更改提交完成。

          ? 此時(shí)如果看看 Tomcat4 的窗口,會(huì)發(fā)現(xiàn)在最下面有一行文字提示: ?

          ? ?Debugging -- changes saved to conf/server.xml
          ?
          ? 此時(shí) D:\Tomcat 4.1\conf\server.xml 文件的配置已經(jīng)更改保存完畢。


          ? 如果此時(shí)打開D:\Tomcat 4.1\conf\server.xml 文件,會(huì)發(fā)現(xiàn)server.xml 文件的內(nèi)容改變了很多。
          ? 一些注釋文字都被去掉了。

          ? 還會(huì)發(fā)現(xiàn)上面第三步配置Web應(yīng)用的如下文字
          ? ?
          ? ?<!-- Tomcat Root Context -->
          ? ? ?<!--
          ? ? ? ? ? <Context path="" docBase="ROOT" debug="0"/>
          ? ? ? -->
          ? ?
          ? ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

          ? 則被自動(dòng)修改成了這樣的:

          ? ? ?<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
          ? ? ? ? </Context>

          ? ?
          ? ?好了,至此位置,對(duì)Oracle的應(yīng)用連接池已經(jīng)配置完畢。
          ? ?
          ? ?仔細(xì)對(duì)照server.xml 文件,會(huì)發(fā)現(xiàn)剛才所配置的連接池信息被放置在<GlobalNamingResources>標(biāo)簽中,這意味著這個(gè)信息是可以被全局引用的,大致是如下的樣子:

          ? ? <GlobalNamingResources>
          ? ? <Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/>
          ? ? <Resource name="jdbc/myOrcl" scope="Shareable" type="javax.sql.DataSource"/>
          ? ? <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/>
          ? ?
          ? ? <ResourceParams name="jdbc/myOrcl">
          ? ? ? <parameter>
          ? ? ? ? <name>maxWait</name>
          ? ? ? ? <value>5000</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>maxActive</name>
          ? ? ? ? <value>200</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>password</name>
          ? ? ? ? <value>mypassword</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>url</name>
          ? ? ? ? <value>jdbc:oracle:thin:@192.168.6.40:1521:dbserver</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>driverClassName</name>
          ? ? ? ? <value>oracle.jdbc.driver.OracleDriver</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>maxIdle</name>
          ? ? ? ? <value>20</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>username</name>
          ? ? ? ? <value>myname</value>
          ? ? ? </parameter>
          ? ? </ResourceParams>
          ? ? <ResourceParams name="UserDatabase">
          ? ? ? <parameter>
          ? ? ? ? <name>factory</name>
          ? ? ? ? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>pathname</name>
          ? ? ? ? <value>conf/tomcat-users.xml</value>
          ? ? ? </parameter>
          ? ? </ResourceParams>
          ? </GlobalNamingResources> ?


          5.設(shè)置web應(yīng)用對(duì)連接池的引用。
          ?
          ? 打開D:\Tomcat 4.1\conf\server.xml 文件,找到剛才配置的web應(yīng)用文字,由于剛才server.xml 文件被自動(dòng)修改過,并去掉了很多注釋內(nèi)容,所以剛才配置的web應(yīng)用

          ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

          ? 被自動(dòng)修改成了這樣的:

          ? ? ?<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
          ? ? ? ? </Context>

          ? 在<Context></Context>的描述中加上本web應(yīng)用對(duì)全局連接池的引用說明,如下文字:

          ? ? <ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ?

          ? 設(shè)置完成后,web應(yīng)用的描述大致如下面的樣子:

          ? ? <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> ?
          ? ?
          ? ? ? <ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ? ? ?
          ? ?
          ?</Context>


          ? 保存D:\Tomcat 4.1\conf\server.xml 文件。

          ? 注意,設(shè)置這個(gè)連接池的引用說明是非常重要的一步。
          ? 一些朋友在Tomcat4中配置連接池失敗的原因大都?xì)w咎與此。還有網(wǎng)上一些文章說這是一個(gè)Tomcat4的一個(gè)Bug。
          ? 我用了整整兩天兩夜的時(shí)間才明白其中的奧秘。[:(]
          ? 當(dāng)時(shí)離瘋掉只查一點(diǎn)點(diǎn)。因?yàn)楫吘古渲靡粋€(gè)連接池是很簡(jiǎn)單的。[:(]


          6.一般情況下,到此,連接池的設(shè)置就完成了。

          ? 然后需要重新啟動(dòng)Tomcat,這樣就可以使用連接池來工作了。

          ? 但是,看到很多文章上說,還需要設(shè)置一下web.xml才能應(yīng)用。我沒有設(shè)置web.xml,連接池也可以完全使用。

          ? 現(xiàn)在說一下web.xml的配置方法。

          ? 在D:\mypool中新建文件夾,命名為WEB-INF,注意是大寫的字母。

          ? 然后在D:\mypool\WEB-INF\ 下新建文件web.xml,其內(nèi)容為:

          ? <web-app>
          ? ? <resource-ref>
          ? ? ? ? <description>Oracle DataSource example</description>
          ? ? ? ? <res-ref-name>jdbc/myOrcl</res-ref-name>
          ? ? ? ? <res-type>javax.sql.DataSource</res-type>
          ? ? ? ? <res-auth>Container</res-auth>
          ? ? </resource-ref>
          ? </web-app>

          ? 保存D:\mypool\WEB-INF\web.xml 文件。


          7.一個(gè)簡(jiǎn)單的應(yīng)用示例。

          ? 寫了一個(gè)簡(jiǎn)單的JSP頁(yè)面,用連接池來訪問數(shù)據(jù)庫(kù)。

          內(nèi)容如下:
          ---------------------
          <%@ page contentType="text/html;charset=GBK"%>
          <%@ page import="javax.naming.*"%>
          <%@ page import="javax.sql.*"%>
          <%@ page import="java.sql.*"%>
          <%
          ? ? try
          ? ? { ? ? ? ? ? ? ? ? ?
          ? ? ? ?Context initCtx = new InitialContext();
          ?
          ? ? ? ?if(initCtx==null)
          ? ? ? ? ? throw new Exception("沒有匹配的環(huán)境");

          ? ? ? ?Context ctx = (Context) initCtx.lookup("java:comp/env");
          ? ? ?
          ? ? ? ?//獲取連接池對(duì)象 ? ? ? ? ? ? ? ? ?
          ? ? ? ?Object obj = (Object) ctx.lookup("jdbc/myOrcl"); ?
          ? ? ?
          ? ? ? //類型轉(zhuǎn)換
          ? ? ? ?javax.sql.DataSource ds = (javax.sql.DataSource)obj;
          ? ? ? ? ?
          ? ? ? ?if(ds==null)
          ? ? ? ? ? throw new Exception("沒有匹配數(shù)據(jù)庫(kù)"); ?
          ? ?
          ? ? ? ?Connection conn = ds.getConnection();
          ? ? ?
          ? ? ? ?Statement stmt = conn.createStatement(); ? ? ? ? ? ? ? ? ?
          ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
          ? ? ? ?String strSql="select * from grade"; ?//SQL,要保證grade數(shù)據(jù)表里面有記錄。
          ? ? ? ? ? ? ? ? ? ? ?
          ? ? ? ?ResultSet rs=stmt.executeQuery(strSql);

          ? ? ? ?if(rs.next())
          ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ?
          ? ? ? ? ? out.println(rs.getString(1)); ? ? ? ? ? ? ? ? ? ? ? ? ?
          ? ? ? ? ? out.println(rs.getString(2)); ? ? ? ? ? ? ? ? ? ? ?
          ? ? ? ? ?}
          ? ? ? ?rs.close(); ? ? ?//關(guān)閉ResultSet ?
          ? ? ? ?stmt.close(); ? ?//關(guān)閉Statement
          ? ? ? ?conn.close(); ? ?//將連接放回到連接池
          ? ? ?}

          ? ? ?catch(Exception ex)

          ? ? ?{ ? ?
          ? ? ? ? ?ex.printStackTrace();
          ? ? ? ? ?throw new SQLException("cannot get Connection pool."+ex);
          ? ? ?}
          %>

          <hr>
          --------------------
          ?
          記住,用完后的數(shù)據(jù)庫(kù)連接要釋放。
          不然當(dāng)打開的連接過多或惡意刷屏,連接池的連接數(shù)目會(huì)被用完。
          當(dāng)連接池的連接數(shù)目用完后,再訪問jsp頁(yè)面時(shí),會(huì)在頁(yè)面出現(xiàn)如下的錯(cuò)誤信息,報(bào)告連接池的連接被耗盡:
          java.sql.SQLException: DBCP could not obtain an idle db connection, pool exhausted




          二、Win2k下Tomcat5 的連接池的配置

          安裝jakarta-tomcat-5.0.13.exe,假如Tomcat5的安裝目錄為 D:\Tomcat 5.0 。

          別忘了把oracle的驅(qū)動(dòng)程序classes12.jar文件copy到目錄 D:\Tomcat 5.0\common\lib\ 下。

          Tomcat5的連接池設(shè)置和Tomcat4 的差不多,僅說明一下不同點(diǎn)或需要特別注意的地方。


          1. Tomcat5啟動(dòng)后,訪問 http://127.0.0.1:8080/admin 頁(yè)面,當(dāng)設(shè)置完Tomcat的連接池?cái)?shù)據(jù)源后,打開D:\Tomcat 5.0\conf\server.xml 文件,會(huì)看到配置的連接池相關(guān)信息大致如下樣子:

          <GlobalNamingResources>
          ? ? <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
          ? ? <Resource name="jdbc/myOrcl" type="javax.sql.DataSource"/>
          ? ? <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
          ? ? <ResourceParams name="jdbc/myOrcl">
          ? ? ? <parameter>
          ? ? ? ? <name>maxWait</name>
          ? ? ? ? <value>5000</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>maxActive</name>
          ? ? ? ? <value>4</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>password</name>
          ? ? ? ? <value>mypassword</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>url</name>
          ? ? ? ? <value>jdbc:oracle:thin:@127.0.0.1:1521:dbserver</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>driverClassName</name>
          ? ? ? ? <value>oracle.jdbc.driver.OracleDriver</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>maxIdle</name>
          ? ? ? ? <value>2</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>username</name>
          ? ? ? ? <value>myusername</value>
          ? ? ? </parameter>
          ? ? </ResourceParams>
          ? ? <ResourceParams name="UserDatabase">
          ? ? ? <parameter>
          ? ? ? ? <name>factory</name>
          ? ? ? ? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          ? ? ? </parameter>
          ? ? ? <parameter>
          ? ? ? ? <name>pathname</name>
          ? ? ? ? <value>conf/tomcat-users.xml</value>
          ? ? ? </parameter>
          ? ? </ResourceParams>
          ? </GlobalNamingResources>

          可以看到,一些連接池的信息配置參數(shù)已經(jīng)和Tomcat4不同了。
          但大致配置步驟和方法都是一樣的。


          2.設(shè)置web應(yīng)用對(duì)連接池的引用。

          ?打開D:\Tomcat 5.0\conf\Catalina\localhost\ 目錄,找到和web應(yīng)用同名的xml文件(mypool.xml),打開這個(gè)文件,
          修該其<Context></Context>的描述信息,添加如下行:

          ? ?<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ?

          使mypool.xml文件的內(nèi)容看起來大致這個(gè):
          ?
          ? ?<Context docBase="D:/mypool" path="/mypool" privileged="true" reloadable="true">
          ? ? ?<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>
          ? ?</Context>

          然后保存mypool.xml,需要重新Tomcat5服務(wù),使之生效。


          3.JSP頁(yè)面測(cè)試文件的寫法也是一樣的,不再贅述。

          4.一些補(bǔ)充:

          ? 如果web應(yīng)用沒有配置對(duì)連接池的引用,即沒有配置<ResourceLink>,則會(huì)在訪問jsp頁(yè)面時(shí)出現(xiàn)如下錯(cuò)誤:
          ? ? NameNotFoundException: Name jdbc is not bound in this Context

          ? 如果缺少Oracle的JDBC驅(qū)動(dòng),則會(huì)在訪問jsp頁(yè)面時(shí)出現(xiàn)如下錯(cuò)誤:
          ? ? java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
          posted @ 2006-03-22 11:30 kelven 閱讀(1644) | 評(píng)論 (1)編輯 收藏
          主站蜘蛛池模板: 阳西县| 苍溪县| 佳木斯市| 上饶县| 蚌埠市| 罗山县| 广安市| 大邑县| 双流县| 开远市| 胶南市| 新巴尔虎左旗| 鲁甸县| 凤台县| 吴桥县| 六枝特区| 南宁市| 内丘县| 商洛市| 鄂托克前旗| 宣汉县| 昌平区| 哈巴河县| 商河县| 当阳市| 禄劝| 保德县| 文成县| 黎川县| 浏阳市| 永平县| 东乌珠穆沁旗| 龙海市| 湖北省| 惠州市| 阳江市| 永安市| 化德县| 交城县| 镇康县| 广德县|