文件首頁
MySQL Connector/J 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 1.2Mb
PDF (A4) - 1.2Mb


MySQL Connector/J 開發人員指南  /  使用 Connector/J 與 Tomcat

第 14 章 使用 Connector/J 與 Tomcat

以下說明基於 Tomcat-5.x 的說明,可在 https://tomcat.dev.org.tw/tomcat-5.5-doc/jndi-datasource-examples-howto.html 找到,這是撰寫本文時的最新版本。

首先,將 Connector/J 隨附的 .jar 檔案安裝在 $CATALINA_HOME/common/lib 中,以便容器中安裝的所有應用程式都可以使用它。

接下來,在定義 Web 應用程式的內容中,將宣告資源新增至 $CATALINA_HOME/conf/server.xml 來設定 JNDI 資料來源

  <Context ....>

  ...

  <Resource name="jdbc/MySQLDB"
               auth="Container"
               type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/MySQLDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <parameter>
      <name>maxActive</name>
      <value>10</value>
    </parameter>

    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>

    <parameter>
      <name>validationQuery</name>
      <value>SELECT 1</value>
    </parameter>

    <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
    </parameter>

    <parameter>
      <name>testWhileIdle</name>
      <value>true</value>
    </parameter>

    <parameter>
      <name>timeBetweenEvictionRunsMillis</name>
      <value>10000</value>
    </parameter>

    <parameter>
      <name>minEvictableIdleTimeMillis</name>
      <value>60000</value>
    </parameter>

    <parameter>
     <name>username</name>
     <value>someuser</value>
    </parameter>

    <parameter>
     <name>password</name>
     <value>somepass</value>
    </parameter>

    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.cj.jdbc.Driver</value>
    </parameter>

    <parameter>
      <name>url</name>
      <value>jdbc:mysql://127.0.0.1:3306/test</value>
    </parameter>

  </ResourceParams>
</Context>

Connector/J 引入了一項功能,即可以使用值設定為 /* ping */validationQuery,而不是使用 SELECT 1validationQuery 值。這會向伺服器發送 ping,然後傳回假的結果集。這是一種較輕量的解決方案。它還有一個優點,如果使用 ReplicationConnectionLoadBalancedConnection 類型的連線,則 ping 將透過所有作用中的連線發送。以下 XML 片段說明如何選擇此選項

<parameter>
 <name>validationQuery</name>
 <value>/* ping */</value>
</parameter>

請注意,/* ping */ 必須完全按照指定方式指定。

一般來說,請遵循您的 Tomcat 版本隨附的安裝說明,因為在 Tomcat 中設定資料來源的方式會不時變更,如果您在 XML 檔案中使用錯誤的語法,則很可能會以類似以下的例外狀況結束

Error: java.sql.SQLException: Cannot load JDBC driver class 'null ' SQL
state: null

請注意,在 JDBC 4.0 和更新版本中,具有 META-INF/service/java.sql.Driver 類別的驅動程式自動載入,會在 Windows 上造成 Tomcat 中 Connector/J 驅動程式的未正確解除部署。也就是說,Connector/J jar 仍然處於鎖定狀態。這是一個與驅動程式無關的初始化問題。如果可行,可能的解決方法如下:使用 "antiResourceLocking=true" 作為 Tomcat Context 屬性,或移除 META-INF/ 目錄。