乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      tomcat連接池的配置與使用(mysql)

       白帆 2005-08-28

      關(guān)于tomcat連接池的配置,我在自己開始的時(shí)候碰到過許多的問題,至少失敗過六次,今天終于成功了。對(duì)于這個(gè)問題的產(chǎn)生與由來我也給大伙說說。
      在《程序員csdn開發(fā)高手》這本雜志的2004年第02期,一位名叫宋廷宇的老師寫了一篇文章,名赤《tomcat連接池的圖形化配置與使用》,我看到了這篇文章,該作者所使用的數(shù)據(jù)庫是sql server,而我所使用的數(shù)據(jù)庫是mysql,tomcat版本為5.0 19。文中有這么一段話:“在tomcat 4.1.18及后續(xù)版本中提供了圖形界面的web應(yīng)用發(fā)布工具,但是使用這個(gè)工具發(fā)布采用數(shù)據(jù)庫連接池的web應(yīng)用時(shí),自動(dòng)生成的配置不能找到數(shù)據(jù)源。這是一個(gè)bug,相信在后續(xù)的版本中所有關(guān)于數(shù)據(jù)庫連接池的配置和發(fā)布都不需要在手工修改配置文件,而使用簡單方便的全圖形化工具”。當(dāng)時(shí)我個(gè)人認(rèn)為:我所使用的tomcat 5.0版的,bug應(yīng)該修正了吧,況且數(shù)據(jù)庫配置嘛,換湯不換藥,原理應(yīng)該是一樣的,但是我嚴(yán)格按照這篇文章上來配置,結(jié)果事與愿為,配置成功運(yùn)行后出錯(cuò)了。附錯(cuò)誤如下:
      org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class ‘
      ‘ for connect URL ‘null‘, cause: No suitable driver
      相信學(xué)過jsp連接數(shù)據(jù)庫的人都有常識(shí),那就是將驅(qū)動(dòng)加入CLASSPATH。排除錯(cuò)誤,驅(qū)動(dòng)沒問題。迷惑中
      于是乎,檢查,重來再檢查,再重來,錯(cuò)誤不變。
      既然圖形下配置錯(cuò)誤,那么我手動(dòng)配置。上網(wǎng)搜索,最權(quán)威的當(dāng)然就是tomcat的doc。剛好文檔中有一篇講如何配置mysql數(shù)據(jù)庫連接池的(全英文的,幸好我英語過得去),一步一步嚴(yán)格按照它的格式來配置,當(dāng)我看到同樣的錯(cuò)誤時(shí),猶如晴天劈靂。一個(gè)字:暈!??!差點(diǎn)放棄。(如果放棄了,就不會(huì)有我今天這篇文章了,好險(xiǎn)呀?。。。?BR>因此我認(rèn)為tomcat有問題。這個(gè)錯(cuò)誤很多人都見過,在csdn及本論壇上,有許多人問到這樣的問題,為這問題,我還在國外的論壇上搜索了,也有人問到這樣的問題,他們說這是tomcat的一個(gè)bug,于是我就默認(rèn)了。后來想想不對(duì),如果是bug的話,jarkata項(xiàng)目組織肯定會(huì)貼出來并且修正這個(gè)bug的。
      我就下載了最新版本的tomcat(5.0 25)再次試驗(yàn),首先是按照書上的文章進(jìn)行圖形化配置,結(jié)果依然,心里想,bug肯定修正,且我與作者的步驟一樣。問題休在???沉著冷靜下來,再次看看tomcat的文檔。又回想起宋廷宇老師的文章中那段話,莫非真的是圖形配置中的bug。
      http://jakarta./tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
      好,就來手工配置吧。于是又打開tomcat的doc開始了手工配置。配置之前建議大家對(duì)server.xml文件做一個(gè)備份,原因就不講了。
      打開server.xml文件,在哪??暈??!打開tomcat$\conf文件夾(tomcat$指的是tomcat的安裝目錄,下皆同)。至于數(shù)據(jù)庫的建立我就不說了,自己按照文章去做吧,說明一下,盡管我不說,我還是按照文章上來做的,你們照葫蘆畫瓢即可。
      首先將那段
      <Context path="/DBTest" docBase="DBTest"
             debug="5" reloadable="true" crossContext="true">
      <!—注意到這里的DBTest了吧,這就是要求大家建立DBTest目錄的原因。-->

       <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="localhost_DBTest_log." suffix=".txt"
                  timestamp="true"/>

       <Resource name="jdbc/TestDB"
                    auth="Container"
                    type="javax.sql.DataSource"/>
       <ResourceParams name="jdbc/TestDB">
         <parameter>
           <name>factory</name>
           <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
         </parameter>

         <!-- Maximum number of dB connections in pool. Make sure you
              configure your mysqld max_connections large enough to handle
              all of your db connections. Set to 0 for no limit.
              -->
         <parameter>
           <name>maxActive</name>
           <value>100</value>
         </parameter>

         <!-- Maximum number of idle dB connections to retain in pool.
              Set to 0 for no limit.
              -->
         <parameter>
           <name>maxIdle</name>
           <value>30</value>
         </parameter>

         <!-- Maximum time to wait for a dB connection to become available
              in ms, in this example 10 seconds. An Exception is thrown if
              this timeout is exceeded.  Set to -1 to wait indefinitely.
              -->
         <parameter>
           <name>maxWait</name>
           <value>10000</value>
         </parameter>

         <!-- MySQL dB username and password for dB connections  -->
         <parameter>
          <name>username</name>
          <value>javauser</value>
      <!—數(shù)據(jù)庫用戶名-->

         </parameter>
         <parameter>
          <name>password</name>
          <value>javadude</value>
      <!—數(shù)據(jù)庫密碼-->
         </parameter>
         <!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
              if you want to use this driver - we recommend using Connector/J though
         <parameter>
            <name>driverClassName</name>
            <value>org.gjt.mm.mysql.Driver</value>
      </parameter>
      這里面是被注釋的,因?yàn)橐郧斑B接mysql是這樣連接的,現(xiàn)在建議用下面的方法,自己可以看到。
          -->
         
         <!-- Class name for the official MySQL Connector/J driver -->
         <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
         </parameter>
         
         <!-- The JDBC connection url for connecting to your MySQL dB.
              The autoReconnect=true argument to the url makes sure that the
              mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
              connection.  mysqld by default closes idle connections after 8 hours.
              -->
         <parameter>
           <name>url</name>
           <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>
      <!--這是數(shù)據(jù)庫的地址,也可以不要這么繁瑣,改為
      jdbc:mysql://localhost/javatest即可,javatest為數(shù)據(jù)庫名-->
         </parameter>
       </ResourceParams>
      </Context>
      貼在這了,別嫌長啊。我加了注釋。至于我們貼到什么位置,在</Host>前面,找到相對(duì)應(yīng)的位置,由于我的server.xml文件未備份,所以我無法再次將所貼位置告訴大家了,不好意思,有事給我發(fā)過來,我一定還記得的,到時(shí)再手把手教你們。
      在tomcat$\webapps文件夾下建立一個(gè)名為DBTest的文件夾,注意大小寫。在此文件夾下建立WEB-INF文件夾,及一個(gè)文件:test.jsp,再在WEB-INF文件夾下建立兩個(gè)文件夾:lib及classes,將數(shù)據(jù)庫驅(qū)動(dòng)文件拷貝到lib文件夾下,同樣還在WEB-INF文件夾下建一個(gè)文件web.xml,看到doc上有現(xiàn)成的,要不要拷貝呀,這就有個(gè)問題,doc有個(gè)問題,有空給它們寫封信吧,這也是我經(jīng)過實(shí)現(xiàn)才發(fā)現(xiàn)的。
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <web-app xmlns="http://java./xml/ns/j2ee"
         xmlns:xsi="http://www./2001/XMLSchema-instance"
         xsi:schemaLocation="http://java./xml/ns/j2ee
      http://java./xml/ns/j2ee/web-app_2_4.xsd"  version="2.4">
       <description>MySQL Test App</description>
       <resource-ref>
           <description>DB Connection</description>
           <res-ref-name>jdbc/TestDB</res-ref-name>
           <res-type>javax.sql.DataSource</res-type>
           <res-auth>Container</res-auth>
       </resource-ref>
      </web-app>
      用我的,沒錯(cuò)的。
      Test.jsp
      <%@ page contentType="text/html; charset=GBK"%>
      <%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
      <html>
      <head><title>test.jsp</title></head>
      <body bgcolor="#ffffff">
      <h1>test Tomcat</h1>
      <%
      try
      {
      Context initCtx=new InitialContext();
      DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/TestDB");
      Connection conn=ds.getConnection();
      out.println("data from database:<br>");
      Statement stmt=conn.createStatement();
      ResultSet rs =stmt.executeQuery("select id, foo, bar from testdata");
      while(rs.next())
      {
      out.println(rs.getInt("id"));
      out.println(rs.getString("foo"));
      out.println(rs.getString("bar"));
      }
      rs.close();
      stmt.close();
      }
      catch(Exception e)
      {
      e.printStackTrace();
      }
      %>
      </body>
      </html>
      doc上的test.jsp是使用了tag ,我認(rèn)為沒必要,大家反而看不懂,并且它沒有關(guān)閉connection及statement,個(gè)人認(rèn)為存在不安全因素,因此我自己也改過來了。
      接下來的事情嘛,自己測試,測試前要將mysql打開,常識(shí)性的錯(cuò)誤別犯了。
      啟動(dòng)tomcat
      至http://localhost:8080/DBTest/test.jsp
      在我的界面上是
      test Tomcat
      data from database:
      1 hello 12345
      大家盡情享用吧。


      有問題,請(qǐng)聯(lián)系liyong_2003@hotmail.com
      如有轉(zhuǎn)載,請(qǐng)注明出處。

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多