はじめに
普段、複数の種類のDBでテストすることが多いので、
アプリケーションサーバ(当方の環境ではTomcat8.5.20)のcontext.xmlには
接続する可能性のあるすべてのDBの記述をずらっと書いています。
実装例
環境依存による違いは大いにあると思いますが、ご参考になれば...。
DB2はほとんど使わないので、実用に堪えうるかは?です。
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/コンテキストパス">
	<!-- MySQL -->
	<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://ホスト名:3306/データベース名?zeroDateTimeBehavior=convertToNull" validationQuery="SELECT 0" />
	<!-- Oracle -->
	<Resource name="jdbc/Oracle" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ホスト名)(PORT=1521))(LOAD_BALANCE=YES)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=サービス名)))" validationQuery="SELECT 0 FROM DUAL" />
	<!-- SAP HANA -->
	<Resource name="jdbc/HANA" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="com.sap.db.jdbc.Driver" url="jdbc:sap://ホスト名:30013/?databaseName=データベース名&autocommit=false" validationQuery="SELECT 0 FROM DUMMY" />
	<!-- PostgreSQL -->
	<Resource name="jdbc/PostgreSQL" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://ホスト名:5432/データベース名" validationQuery="SELECT 0" />
	<!-- SQLServer -->
	<Resource name="jdbc/SQLServer" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://ホスト名:1433;databaseName=データベース名" validationQuery="SELECT 0" />
	<!-- DB2 -->
	<Resource name="jdbc/DB2" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="-1" username="ユーザ名" password="パスワード" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://ホスト名:50000/データベース名:currentSchema=スキーマ名(例: db2admin);" validationQuery="SELECT 0 FROM SYSIBM.DUAL" />
</Context>
サンプルでは、動作確認しやすいようにjspで実装しています。
connection_test.jsp
<%-- 
    Author     : tool-taro.com
--%>
<%@page import="javax.sql.DataSource"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.naming.InitialContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %>
<%
        //コネクションを取得するjndi
        String jndi = "java:comp/env/jdbc/MySQL";
        //String jndi = "java:comp/env/jdbc/Oracle"; //←Oracleの場合
        InitialContext context = null;
        Connection connection = null;
        //コネクション取得処理
        String result = null;
        try {
                context = new InitialContext();
                DataSource dataSource = (DataSource) context.lookup(jndi);
                connection = dataSource.getConnection();
                //トランザクション分離レベルがDBによって異なるので設定を統一
                connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
                connection.setAutoCommit(false);
                result = connection.getMetaData().getDatabaseProductName();
        }
        finally {
                if (context != null) {
                        try {
                                context.close();
                        }
                        catch (Exception e) {
                        }
                }
                if (connection != null) {
                        try {
                                connection.close();
                        }
                        catch (Exception e) {
                        }
                }
        }
%>
<!DOCTYPE html>
<html>
    <head>
        <title>tool-taro.com</title>
    </head>
    <body>
        接続したDB="<%= result%>"
    </body>
</html>
動作確認
connection_test.jspの実行結果を見てみましょう。
接続したDB="MySQL" 
環境
- 
開発 - Windows 10 Pro
- JDK 1.8.0_144
- NetBeans IDE 8.2
 
- 
動作検証 - CentOS Linux release 7.4
- JDK 1.8.0_144
 
Webツールも公開しています。
Web便利ツール@ツールタロウ