Oracle Universal Connection Pool for JDBCを使ってJavaからOracleに接続する

環境

Oracleにテスト用のユーザーを作成する

  1. スタート>すべてのプログラム>Oracle 11g Express Edition>SQLコマンドラインの実行
  2. SYSTEMユーザーで接続して新しいユーザーを作成する。
    SQL> connect
    ユーザー名を入力してください: system
    パスワードを入力してください:
    
    接続されました。
    SQL> create user [username] identified by [password];
    
    ユーザーが作成されました。
                
  3. 新しいユーザーに権限を付与する。
    SQL> grant CREATE SESSION, ALTER SESSION, CREATE DATABASE LINK, CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, CREATE ROLE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE TRIGGER, CREATE TYPE, CREATE VIEW, UNLIMITED TABLESPACE to [username];
    
    権限付与が成功しました。
                

SQL Developerでデータベースに接続する

  1. 接続を追加する。

    データベース接続の作成/選択

ORA-28002: the password will expire within 7 days

期限切れのパスワード: パスワードの期限が切れると、ユーザーの変更を行うようエラー・メッセージが表示されます。パスワードをリセットするには、接続を右クリックして「パスワードのリセット」を選択します。

https://docs.oracle.com/cd/E16338_01/readmes.112/b56292/sqldev_readme.htm

  1. SQL Developerで接続名を右クリックしてパスワードのリセットを選択する。

Oracle Universal Connection Pool for JDBCを使ってJavaからOracleに接続する

JavaからOracleに接続する場合のサンプルコード。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.ucp.jdbc.PoolDataSource;
import oracle.ucp.jdbc.PoolDataSourceFactory;

public class Main {

  public static void main(String[] args) throws SQLException {
    String oracleVersion = "no data";

    PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
    pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
    pds.setURL("jdbc:oracle:thin:@//localhost:1521/xe");
    pds.setUser("[username]");
    pds.setPassword("[password]");

    try (Connection conn = pds.getConnection()) {
      PreparedStatement stat = conn.prepareStatement("select * from v$version");
      ResultSet rs = stat.executeQuery();

      while (rs.next()) {
        oracleVersion = rs.getString(1);
        break;
      }
    }
    finally {
    }

    System.out.println(oracleVersion);
  }
}
    

Tomcatを起動する

  1. [Tomcatのインストールディレクトリ]/bin/setenv.batを作成する。
    set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_74"
    exit /b 0
                
  2. [Tomcatのインストールディレクトリ]/conf/server.xmlを修正する。
    ポート番号がOracle XEのホーム画面と重なるので変更する。
    8080から8081に変更する。
    
    <Service name="Catalina">
      <Connector port="8081" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" />
    </Service>
                
  3. [Tomcatのインストールディレクトリ]/bin/startup.batを実行してTomcatを起動する。
  4. ブラウザで http://localhost:8081/ を表示する。
  5. [Tomcatのインストールディレクトリ]/bin/shutdown.batを実行してTomcatを終了する。

WAR (Web Archive)を作成する

  1. EclipseでDynamic Web Projectを作成する。
  2. JDBCとUCPのライブラリをプロジェクトに配置する。
  3. JSPファイルをプロジェクトに配置する。
  4. Javaファイルをプロジェクトに配置する。
  5. JDBCリソース定義ファイルをプロジェクトに配置する。
  6. JDBCリソース参照をweb.xmlに追加する。

WAR (Web Archive)をTomcatにデプロイして動作を確認する。

  1. OracleJDBCandUCPWebプロジェクトを右クリックしてExport>WAR fileを選択する。
  2. ブラウザで http://localhost:8081/OracleJDBCandUCPWeb/ を表示する。
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
                

関連情報

2016, AfternoonTea