TOPサーバ構築・運用> コネクションプーリングの設定
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第9回:データベースとの連携(前編)

著者:山田 祥寛   2006/5/12
前のページ  1  2
コネクションプーリングの設定

   Tomcatは、標準でコネクションプーリングの機能を備えています。コネクションプーリングを利用するには、コンテキスト定義ファイル<アプリケーション名>.xml(この場合はmarugoto.xml。リスト1)、デプロイメントディスクリプタweb.xml(リスト2)を記述してください。marugoto.xmlは「%CATALINA_HONE% /conf/Catalina/localhost」フォルダに、web.xmlはアプリケーションルートの「/WEB-INF」フォルダに配置する必要があります。

リスト1:marugoto.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Context displayName="MarugotoJ2EE" docBase="marugoto" path="/marugoto"
   reloadable="true">
   <Resource name="jdbc/Marugoto" auth="Container"
      type="javax.sql.DataSource" username="jusr" password="jpass"
      driverClassName="org.gjt.mm.mysql.Driver"
      url="jdbc:mysql://localhost/marugoto?
useUnicode=true&characterEncoding=sjis"
      maxActive="20" maxWait="10000" maxIdle="10"
      validationQuery="SELECT count(*) FROM artist" />
</Context>

リスト2:web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
      <resource-ref>
            <res-ref-name>jdbc/Marugoto</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
      </resource-ref>
</web-app>

   コンテキスト定義ファイルのルート要素は<Context>要素です。<Context>要素配下に、<Resource>要素でコネクションプーリングの設定パラメータを定義してください。それぞれの要素で定義可能なパラメータは、表2の通りです。

要素 属性 概要
<Context> displayName アプリケーションの表示名
docBase アプリケーションルートを表す物理フォルダ(絶対パス、またはwebappsフォルダからの相対パス)
path URL上で指定すべきアプリケーションパス
reloadable アプリケーション配下のライブラリが更新された場合に自動でリロードするか(注)
<Resource> name リソースを一意に識別する名前
username データベース接続に使用するユーザ名
password データベース接続に使用するパスワード
driverClassName 使用するJDBCドライバ(完全修飾名)
url データベース接続文字列
maxActive 維持する最大接続数
maxWait 接続時のタイムアウト時間(ミリ秒)
maxIdle アイドル時に最低維持する接続数
validationQuery 接続時の検証クエリ

表2:context.xmlの主要な設定項目

※注: reloadable属性をtrueに設定すると、ライブラリを導入/更新した場合にも、アプリケーションを再起動する必要がなくなります。ただし、自動リロードはパフォーマンス低下の原因となるので、実運用では必ず無効にしてください。

   明示されていない属性は、とりあえず固定値だと思っておいてかまいません。name属性には、リソースを一意に表す名前を指定します。この名前には任意の値を指定できますが、web.xmlの<res-ref-name>要素と一致している必要があります。

   url属性にはデータベース接続時に使用する接続文字列を指定します。データベース接続文字列の一般的な書式は、次の通りです。

jdbc:subprotocol://subname

   subprotocolにはデータベースを識別するための値(本稿の例では"mysql")を、subnameにはデータベース依存の接続情報を指定します。例えば、MySQLの場合は以下のように記述します。

//hostName/dbName[?attribute]

   attribute(属性情報)には文字コード名などを「属性名=値」の形式で設定します。JDBCドライバは文字コードを自動認識するため、文字コードの設定は必須ではありません。しかし、一部の環境では文字化けを起こすことがあるので、useUnicode属性やcharacterEncoding属性を明示することで、文字化けを防ぐことができます。characterEncoding属性は、データベース内で使用している文字コードに合わせて適宜変更してください。

   validationQuery属性には、接続検証に使用するクエリを指定します。データベースによっては、接続を長時間維持していると、自動的に接続を切断してしまうものがあります。コネクションプーリングでは、このようにして無効となった接続をアプリケーションに引き渡すのを防ぐために、あらかじめ検証クエリで接続が維持されているかを確認するというわけです。検証クエリは、結果を返すものであれば内容はなんでもかまいませんが、あくまで接続確認用なので、実行負荷の少ないクエリを指定すべきです。


次回は

   次回は実際にJSPページからデータベースサーバ(MySQL)上のartistテーブルにアクセスして、読み込んだデータを一覧表示するdatabase.jspについて解説します。

前のページ  1  2


WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

INDEX
第9回:データベースとの連携(前編)
  データベース連携アプリケーションを構築しよう
コネクションプーリングの設定