19cおよび18.3 JDBCを使用したAutonomous Database(ATPまたはADW)へのJava接続

Oracle Autonomous Database(ADB)は、各製品がワークロードに応じて最適化された製品ファミリです。JavaアプリケーションでADBに接続するには、Java Key Store(JKS)またはOracleウォレットが必要です。DB 19cおよび18.3のJDBCドライバの機能強化により、ADBへのJava接続が非常に簡単になります。ADBへの正常な接続を確立させるための手順を以下に示します。

    前提条件

    すべて開く すべて閉じる
  • 1. Autonomous Database(ADB)インスタンスのプロビジョニング

    Oracle Autonomous Database(ADB)へのアクセス権を取得します。まだADBインスタンスをプロビジョニングしていない場合は、以下のリンクをクリックしてADBインスタンスの手順を参照してください。

    ADMINユーザーで使用したパスワードをお忘れのないようご注意ください。このデモではADMINユーザーを使用しますが、SQLDeveloperまたはSQL Developer Webコンソールを使用して他のデータベース・ユーザーを作成することをお薦めします。

  • 2. クライアント資格証明の取得

      Autonomous Databaseの作成後、以下の手順に従ってOracle Cloud Consoleからクライアント資格証明をダウンロードします。クライアント資格証明(wallet_[dbname].zip)には、要件となるウォレット・ファイルとtnsnamea.oraが含まれており、相互TLSを提供し、認証と暗号化のセキュリティを強化します。
    • Oracle Cloud Consoleから、Oracle Autonomous DatabaseインスタンスのAutonomous Database Detailsページに移動します。
    • DB Connectionボタンをクリックします。新しいウィンドウが表示されます。
    • Download Walletボタンをクリックします。「Wallet Type」は「Instance Wallet」のままにします。
    • Passwordフィールドにウォレットのパスワードを入力し、Confirm passwordフィールドでパスワードを確認します。次に、Downloadボタンをクリックします。パスワードは8文字以上の長さで、1つ以上の文字と、1つ以上の数字または特殊文字を含んでいる必要があります。
    • クライアント資格証明のzipファイル(wallet_[dbname].zip)を安全なディレクトリに保存し、解凍します。このディレクトリの場所は後で必要になります。
    • zipファイルの内容を以下に示します。
      1. tnsnames.ora and sqlnet.ora: 接続記述子とSQL*Netのクライアント側構成を格納するネットワーク構成ファイル。
      2. cwallet.ora and ewallet.p12: 自動オープンのSSOウォレットとPKCS12ファイル。PKCS12ファイルは、UIで指定されたウォレットのパスワードで保護されています。
      3. keystore.jks and truststore.jks: ウォレットのダウンロード時に提供されるウォレットのパスワードで保護された、JKSトラストストアとキーストア。
      4. ojdbc.properties: JDBC接続に必要なウォレット関連の接続プロパティを格納。これはtnsnames.oraと同じパスに配置する必要があります。
  • 3. JDK8以上のインストール

    JDK81またはそれ以降のバージョンのJDKをダウンロードします。
    注意: JDK11、JDK10、またはJDK9を使用している場合、他に必要な操作はありません。JDKのバージョンがJDK8u162未満の場合は、JCE Unlimited Strength Jurisdiction Policy Filesをダウンロードします。インストールに関する注意事項については、READMEを参照してください。

    1 "java -version"を使用してインストールしたJDKのバージョンを確認します。"java -jar ojdbc8.jar"を使用してJDBCドライバのバージョンを確認します。

  • 4. JDBCドライバおよびその他のjarのダウンロード

      次のダウンロード・ページから、19cまたは18c JDBCドライバ(ojdbc10-full.tar.gzまたはojdbc8-full.tar.gz、およびucp.jar)をダウンロードします。

      ojdbc8-full.tar.gzおよびojdbc10-full.tar.gzには、Autonomous Databaseへの接続に必要なoraclepki.jar、osdt_core.jar、osdt_cert.jarが含まれています。


      注意: 旧バージョンのJDBCドライバ(12.2.0.1または12.1.0.2)を使用している場合は、こちらのページの手順に従って接続してください。

  • 5. Githubからのサンプル・プログラムのダウンロード

    • Github JDBCコード・サンプルからDataSourceSample.java またはUCPSample.javaをダウンロードします。
      - 接続文字列の一部としてTNSエイリアス(tnsnames.oraにあるdbname_mediumなど)を渡します。
      - wallet_dbname.zipの解凍先にTNS_ADMINプロパティを渡します。TNS_ADMINは、ウォレット・ファイル(ojdbc.propertiesおよびtnsnames.ora)のパスを指定します。

      例: DB_URL="jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/users/test/wallet_dbname/"

    • トラブルシューティングおよびデバッグ: エラーが発生した場合は、「トラブルシューティングのヒント」ページで役立つヒントをご確認ください。

    JKSの使用

    すべて開く すべて閉じる
  • 1. 前提条件

    前提条件のセクションに記載されているすべての手順を実施してください。

  • 2. JKS関連の接続プロパティのコメント解除

      Oracle Autonomous Databaseへの接続に必要なクライアント資格証明は、Wallet_dbname.zipとしてダウンロードされます。zipファイルには、ojdbc.propertiesとtnsnames.oraが含まれています。ojdbc.propertiesファイルの以下のJKS関連の接続プロパティをコメント解除します。
      
      
      # Use the following properties to use JKS, comment out the oracle.net.wallet_location property above 
      # and set the correct password for both trustStorePassword and keyStorePassword. 
      # It's the password provided while downloading the wallet credentials from the DB Connection tab 
      oracle.net.ssl_server_dn_match=true 
      javax.net.ssl.trustStore=${TNS_ADMIN}/truststore.jks 
      javax.net.ssl.trustStorePassword=**password**
      javax.net.ssl.keyStore=${TNS_ADMIN}/keystore.jks 
      javax.net.ssl.keyStorePassword=**password**
      
      

      注意: ojdbc.propertiesファイルのOracleウォレット関連プロパティは必ずコメントしてください。

      
      
      # Connection property for Oracle Wallets 
      # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN}))
      
      

      注意: 19c JDBCドライバを使用する場合は、Easy Connect Plusを使用し、すべての接続プロパティを接続文字列内の名前と値のペアとして渡すことができます。tnsnames.oraを開き、ホスト名、サービス名、証明書の詳細をコピーして、接続文字列を作成できます。

      
      
      Example: jdbc:oracle:thin:@tcps://orclhostname:1522/orclservice?oracle.net.ssl_server_cert_dn=\"CN=test.uscom-east-1.oraclecloud.com,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US\"
      &javax.net.ssl.trustStore=/users/test/wallet_dbname/truststore.jks
      &javax.net.ssl.trustStorePassword=**password**
      &javax.net.ssl.keyStore=/users/test/wallet_dbname/keystore.jks
      &javax.net.ssl.keyStorePassword=**password**
      
      
  • 3. サンプルJavaプログラムの構築と実行

    • Javaプログラムをコンパイルする
      クラスパスに必要なjarの正確なパスを指定するようにしてください。

      
       javac -classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample.java
      
    • サンプルJavaプログラムを実行する
      クラスパスに必要なjarの正確なパスを指定するようにしてください。

      
       java -classpath ./lib/ojdbc8.jar:./lib/ucp.jar:. UCPSample
      

    Oracleウォレットの使用

    すべて開く すべて閉じる
  • 1. 前提条件

    • 前提条件のセクションに記載されているすべての手順を実施してください。

    • 他に必要な操作はありません。以下のウォレット関連プロパティは、ojdbc.propertiesに事前ロードされています。

      oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN}))

      注意: 19c JDBCドライバを使用する場合は、Easy Connect Plusを使用し、すべての接続プロパティを接続文字列内の名前と値のペアとして渡すことができます。tnsnames.oraを開き、ホスト名、サービス名、証明書の詳細をコピーして、接続文字列などを作成できます。

      
      
      Example:.,jdbc:oracle:thin:@tcps://orclhostname:1522/orclservice?wallet_location=/users/test/wallet_dbname
      &oracle.net.ssl_server_cert_dn=\"CN=adwc.uscom-east-1.oraclecloud.com,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US\"
      
      
  • 2. サンプルJavaプログラムの構築と実行

    • Javaプログラムをコンパイルする
      クラスパスに必要なjarの正確なパスを指定するようにしてください。

      
        javac -classpath ./lib/ojdbc8.jar:./lib/ucp.jar:/lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar UCPSample.java
      
    • サンプルJavaプログラムを実行する
      クラスパスに必要なjarの正確なパスを指定するようにしてください。

      
        java -classpath ./lib/ojdbc8.jar:./lib/ucp.jar:/lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
      

    Tomcat

    すべて開く すべて閉じる
  • 1. サンプルWebアプリケーションの作成

  • 2. context.xmlの作成

    /TOMCAT_HOME/webapps/UCPCloud/META-INF/context.xml内にUCPデータ・ソースを作成します。サービス名には必ずTNSエイリアスを使用してください。また、TNS_ADMINが、クライアント資格証明(Wallet_dbname.zip)が格納されているパスを指していることが必要です。context.xmlのサンプルを以下に示します。
    
    
    <Context docBase="UCPCloud" path="/UCPCloud"
        reloadable="true" source="org.eclipse.jst.jee.server:samplejdbcpage">
    
    <Resource name="tomcat/UCP_atp" auth="Container"
       factory="oracle.ucp.jdbc.PoolDataSourceImpl"
       type="oracle.ucp.jdbc.PoolDataSource"
       description="UCP Pool in Tomcat"
       connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
       minPoolSize="5"
       maxPoolSize="50"
       initialPoolSize="15"
       user="jdbcuser"
       password="XXXXXXXXXXX"
       url="jdbc:oracle:thin:@jdbctest_medium?TNS_ADMIN=/Users/test/ATPTesting/wallet_JDBCTEST"
    />
    </Context>
    
    
  • 3. Tomcatの起動とサーブレットの呼出し

    Tomcatサーバーを起動し、http://lcoalhost:8080/UCPCloud/UCPServletにアクセスしてサーブレットを呼び出します。

    WebLogic Server(WLS)v12.2.1.4

    すべて開く すべて閉じる
  • 1. Webアプリケーション・プロジェクトの作成

    • 前提条件のセクションに記載されているすべての手順を実施してください。

    • 手順の各ステップについては、Webロジック・サーバー(WLS)を使用したATPまたはADWへの接続の動画を参照してください。

    • WLS v12.2.1.4には、JDK8と互換性のある19.3 JDBCドライバ(ojdbc8.jar)が同梱されています。つまり、他に必要な操作はありません。
    • GitHub WebLogicServer_Servletからプロジェクトにサーブレットをコピーします。

  • 2. データソースの作成

    • WebLogicコンソール(http://localhost:7001/console)にログインし、UCPデータ・ソースまたはActive GridLinkデータ・ソース(AGL)を作成します。詳細については、ブログを参照してください。
    • 接続URLには、tnsnames.oraからのTNSエイリアスを含め、TNS_ADMINはウォレットのzipファイルのダウンロード先を指している必要があります。jdbc:oracle:thin:@jdbctest_medium?TNS_ADMIN=/Users/test/ATPTesting/wallet_JDBCTEST
    • 「構成のテスト」をクリックして、ATPに正常に接続できることを確認します。
  • 3. WLSの起動とサーブレットの呼出し

    WebLogicServerを起動し、http://lcoalhost:7001/test-app/UCPServletにアクセスしてサーブレットを呼び出します。