tomcat JNDI 串連池

來源:互聯網
上載者:User

一.在tomcat_home/common/lib下放入jdbc的驅動程式,額外說一下,如果是使用sql server的話,有至少兩個驅動可以選擇,一個是微軟提供的,另一個是 jtds,比微軟的要好很多,推薦使用

二.設定檔,tomcat 不同的版本設定檔略有不同,下面以tomcat5..5.*為例。

三.如果配置不正確會出現javax.naming.NameNotFoundException: Name is not bound in this Context 錯誤
方式一、全域資料庫串連池
1、通過管理介面配置串連池,或者直接在tomcat/conf/server.xml的GlobalNamingResources中增加
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2、在tomcat/webapps/myapp/META-INF/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
這樣就可以了。
方式二、全域資料庫串連池
1、同上
2、在tomcat/conf/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
方式三、局部資料庫連接池
只需在tomcat/webapps/myapps/META-INF/context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
參數說明:
driveClassName:JDBC驅動類的完整的名稱;
maxActive:同時能夠從串連池中被分配的可用執行個體的最大數;
maxIdle:可以同時閑置在串連池中的串連的最大數;
maxWait:最大逾時時間,以毫秒計;
password:使用者密碼;
url:到JDBC的URL串連;
user:使用者名稱稱;
validationQuery:用來查詢池中閒置串連。
以上三種方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是從微軟網站上下載的sql server jdbc (sp3)。

下面 分別舉tomcat5.0 和tomcat 5.5   設定檔 的例子(將此設定檔置於Tomcat /conf/Catalina/localhost 下)

tomcat5.0

<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
     <ResourceParams name="jdbc/test">
         <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>sa</value>
         </parameter>
         <parameter>
             <name>password</name>
             <value>test</value>
         </parameter>
         <!-- Class name for JDBC driver -->
         <parameter>
             <name>driverClassName</name>
             <value>net.sourceforge.jtds.jdbc.Driver</value>
         </parameter>
         <!-- Autocommit setting.   This setting is required to make
              Hibernate work.   Or you can remove calls to commit(). -->
         <parameter>
             <name>defaultAutoCommit</name>
             <value>true</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:jtds:sqlserver://url/filedb;charset=gb2312;autoReconnect=true</value>
         </parameter>
         <!-- Recover abandoned connections -->
         <parameter>
             <name>removeAbandoned</name>
             <value>true</value>
         </parameter>
         <!-- Set the number of seconds a dB connection has been idle
              before it is considered abandoned.
              -->
         <parameter>
             <name>removeAbandonedTimeout</name>
             <value>60</value>
         </parameter>
         <!-- Log a stack trace of the code which abandoned the dB
              connection resources.
              -->
         <parameter>
             <name>logAbandoned</name>
             <value>true</value>
         </parameter>
     </ResourceParams>

tomcat 5.5

   <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               driverClassName="oracle.jdbc.driver.OracleDriver"
               username="test" password="test"
               url="jdbc:oracle:thin:@url:1521:dcdb"
               defaultAutoCommit="true" removeAbandoned="true"
               removeAbandonedTimeout="60" logAbandoned="true"/>

可以看到 5.0 中原來是元素的項在5.5中變成了屬性

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.