ここでは、Tomcat 6でMySQLデータソースを設定する方法を説明します。

1. MySQL JDBCドライバを入手する

ここにJDBCドライバ(http://www.mysql.com/products/connector/)、例えばmysql-connector-java-5.1.9.jarを入手し、

$ TOMCAT \ lib

フォルダにコピーしてください。

2. META-INF/context.xmlを作成する

データベース接続の詳細を定義するWebアプリケーションフォルダのルートに `META-INF/context.xml`ファイルを追加します:


File:META-INF/context.xml

<Context>

  <Resource name="jdbc/mkyongdb" auth="Container" type="javax.sql.DataSource"
               maxActive="50" maxIdle="30" maxWait="10000"
               username="mysqluser" password="mysqlpassword"
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/mkyongdb"/>

</Context>

3. web.xml設定

`web.xml`では、あなたのMySQLデータソースを再び定義します:

  <resource-ref>
    <description>MySQL Datasource example</description>
    <res-ref-name>jdbc/mkyongdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

下記の完全な `web.xml`の例を参照してください:


File:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app__2__5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app__2__5.xsd"
    id="WebApp__ID" version="2.5">

  <display-name>MySQL DataSource Example</display-name>

  <resource-ref>
    <description>MySQL Datasource example</description>
    <res-ref-name>jdbc/mkyongdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

</web-app>

4.それを実行する

リソース注入(

@ Resource

)は、Tomcatからデータソースを取得する最も簡単な方法です。以下を参照してください。

import javax.annotation.Resource;
public class CustomerBean{

    @Resource(name="jdbc/mkyongdb")
    private DataSource ds;

    public List<Customer> getCustomerList() throws SQLException{

     //get database connection
      Connection con = ds.getConnection();
     //...

あるいは、コンテキストルックアップサービスを介してデータソースを取得することもできます。

import javax.naming.Context;
import javax.naming.InitialContext;
public class CustomerBean{

    private DataSource ds;

    public CustomerBean(){
      try {
        Context ctx = new InitialContext();
        ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mkyongdb");
      } catch (NamingException e) {
        e.printStackTrace();
      }
    }

    public List<Customer> getCustomerList() throws SQLException{

     //get database connection
      Connection con = ds.getConnection();
     //...