<目次>
(1) Tomcatのコネクションプールの設定手順
(1-1) コネクションプールとは?
(1-2) コネクションプールの設定手順
(1-2-1) context.xmlの記述
(1-2-2) JDBCドライバの導入&PJにライブラリ追加
(1-2-3) データベース接続テスト用プログラムの作成
(1-2-4) 疎通確認
(1-3) こんなエラーが起きたら・・
・java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
・javax.servlet.ServletException: javax.naming.NamingException: Could not create resource instance
(1) Tomcatのコネクションプールの設定手順
(1-1) コネクションプールとは?
コネクションプールとは、データベース接続をプール(保管)する事で、アプリケーションから接続要求があった時に都度、接続をする負荷を削減する目的の仕組みです。
データベースへの接続処理は負荷の高い処理のため、不特定多数のユーザーから同時接続が発生した際には、逐一接続を行う事はリソースの逼迫に繋がる恐れがあり、こうした状況を改善するためにもデータソースが非常に役に立ちます。
(図111)
(1-2) コネクションプールの設定手順
今回はOracleDBを利用した例の具体的な手順をご紹介します。他ベンダーのDBを使われている方は、DBに関する部分だけ読み替えて参考にして頂けたらと思います。
(1-2-1) コネクションプールの設定手順
①context.xmlの作成


・ファイル名を「context.xml」にして「Finish」を押下します。

②xmlファイルの記述
- <?xml version="1.0" encoding="UTF-8"?>
- <Context displayName="Sample DataSource" docBase="LoginTemplate"
- path="/LoginTemplate" reloadable="true" >
- <Resource name="jdbc/LoginTemplate"
- auth="Container"
- type="javax.sql.DataSource"
- username="[ご自身のスキーマ]"
- password="[ご自身のパスワード]"
- driverClassName="oracle.jdbc.OracleDriver"
- url="jdbc:oracle:thin:@[ホスト名]:[ポート番号]:ORCL"
- maxWait="5000"
- maxIdle="2"
- validationQuery="SELECT * FROM ACCESS_COUNTER" />
- </Context>
(図121)④
(表)Resourceタグの各属性の説明
<Resouce> | name | リソースの名前 データソース(javax.sql.Datasource)を一意に識別する名前 |
<Resouce> | type | リソースのデータ型を指定します。完全限定名(パッケージ名も含めた名前)にて記述します。 (例) データソースの場合は「javax.sql.DataSource」を指定します。 |
<Resouce> | auth | リソースに対する接続方法を指定します。選択肢は以下2つがあります。 ①Application Webアプリケーションのプログラムからアクセスする場合 ②Container コンテナ(Tomcat)がWebアプリケーションに代わってアクセスする場合 データソース(javax.sql.Datasource)を利用する場合は「Container」を指定します。 |
<Resouce> | username | getConnection(username, password)の呼び出し(接続時)に指定する、データソースの「ユーザー名」です。 |
<Resouce> | password | getConnection(username, password)の呼び出し(接続時)に指定する、データソースの「パスワード」です。 |
<Resouce> | driverClassName | JDBCドライバクラスの完全修飾名を指定します。 (例) Oracle: oracle.jdbc.OracleDriver MySQL: com.mysql.jdbc.Driver Postgre: org.postgresql.Driver |
<Resouce> | url | データソースのURLを指定します。 (例) Oracle: jdbc:oracle:thin:@[HostName]:[ポート番号]:[SID] MySQL: jdbc:mysql://[HostName]:[ポート番号]/[DB名] Postgre: jdbc:postgresql://[HostName]:[ポート番号]/[DB名] |
<Resouce> | maxActive | コネクションプールに保持する最大DB接続数を指定します。 ※「-1」を指定すると無制限になります。 |
<Resouce> | maxWait | DB接続が確立されるまでの最大待ち時間を秒単位で指定します。 ※「-1」を指定すると無制限になります。 |
<Resouce> | maxIdle | 接続プールに残すアイドリング状態のDB接続数。 |
<Resouce> | validationQuery | 接続が正常に出来ているか?をチェックするためのSQLです。 |
(1-2-2) JDBCドライバの導入&PJにライブラリ追加
①JDBCドライバのダウンロード&配備
②動的Webプロジェクトのビルドパスに追加


(1-2-3) データベース接続テスト用プログラムの作成
- Context context = new InitialContext();
- DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/LoginTemplate");
- Connection conn = ds.getConnection();
- conn.close();
以下、JSP全体のサンプルプログラムをご紹介します。
(サンプル)
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@ page import="java.sql.*, javax.naming.*, javax.sql.*" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Connection Pool Test</title>
- </head>
- <body>
- <%
- Context context = new InitialContext();
- DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/LoginTemplate");
- Connection conn = ds.getConnection();
- conn.close();
- %>
- コネクションを確立しました。
- </body>
- </html>

(1-2-4) 疎通確認
- https://[ホスト名]:[ポート名]/[アプリケーション名]/[JSP名].jsp
- https://ik1-336-28337.vs.sakura.ne.jp:8443/LoginTemplate/ConnectionPoolTest.jsp

(1-3) こんなエラーが起きたら・・
・java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver

・javax.servlet.ServletException: javax.naming.NamingException: Could not create resource instance
