プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理
12c (12.2.1.3.0)
E90329-05
目次へ移動
目次

前
次

19 WebLogic ServerでのJDBCドライバの使用方法

WebLogic Serverは、様々なデータベースへのアクセスを提供するためにJDBCドライバを使用します。WebLogic ServerにはデフォルトのJDBCドライバが付属していますが、サード・パーティのJDBCドライバも使用できます。

この章では、JDBCドライバの設定方法および使用方法を説明します。この章には次の項が含まれます:

JDBCドライバのサポート

WebLogic Serverでは、JDBC対応ドライバ-を使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。

JDBC準拠のドライバは、次の要件を満たす必要があります。
  • ドライバはスレッドセーフであることが必要です。

  • トランザクションをサポートする環境でドライバを使用する場合は、標準のJDBCトランザクション・コール(setAutoCommit()およびsetTransactionIsolation()など)を実装する必要があります。

  • SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。

WebLogic Serverの機能によってデータベースが内部データ記憶に使用される場合は、アプリケーション・データ・アクセスに使用される場合よりもデータベースのサポートが制限されます。次のWebLogic Serverの機能では、内部データ記憶が必要です。
  • コンテナ管理の永続性(CMP)

  • 行セット

  • JMS/JDBC永続性、およびWebLogic JDBCストアの使用

  • JDBCセッション永続性

  • RDBMSセキュリティ・プロバイダ

  • (シングルトン・サービスおよびサーバーの移行用)データベース・リース

  • JTAロギング・ラスト・リソース(LLR)最適化

WebLogic ServerとともにインストールされるJDBCドライバ

Oracle Thinドライバのバージョン12cは、Oracle WebLogic Serverとともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL 5.1.x (mysql-connector-java-commercial-5.1.22-bin.jar)JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。

ドライバ・ファイルの名前は次のとおりです。

  • ojdbc8.jarojdbc8_g.jarojdbc8dms.jar (JDK 8の場合)

ノート:

WebLogicブランドのDataDirectドライバの詳細は、『Oracle WebLogic Server JDBCアプリケーションの開発』WebLogicブランドのDataDirectドライバの使用に関する項を参照してください。

これらのドライバは、$ORACLE_HOME/oracle_common/modulesのサブディレクトリにインストールされます。weblogic.jarのマニフェストには、このファイルがリストされており、そのためこのファイルはweblogic.jarのロード時(サーバーの起動時)にロードされます。したがって、このJDBCドライバをCLASSPATHに追加する必要はありません。WebLogic ServerとともにインストールされないサードパーティJDBCドライバを使用する予定がある場合、それらのドライバをインストールする必要があります。インストール作業には、ドライバ・ファイルへのパスでCLASSPATHを更新することが含まれます。また、データベース・クライアント・ファイルへのパスでPATHを更新することも含まれる場合があります。『Oracle WebLogic Serverの新機能』のサポートされる構成を参照してください

ノート:

  • WebLogic Serverでは、WebLogic ServerサンプルとともにDerby DBMSのバージョンがWL_HOME\common\derbyディレクトリにインストールされます。Derbyは、すべてJavaで作成されたDBMS製品で、WebLogic ServerサンプルのデモンストレーションをサポートするためにWebLogic Serverディストリビューションに含まれています。Derbyの詳細は、http://db.apache.org/derbyを参照してください。

  • インストールされているOracle Thinドライバをアップグレードする場合(ダウングレードはサポートされていません)は、『WebLogic Server 10.3.6および12cにバンドルされているUCPおよびJDBCドライバをアップグレードする方法(Database 11gおよび12cの両方) (ドキュメントID 1970437.1)』の記載に従ってください。http://www.oracle.com/support/index.htmlを参照してください。

WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバの追加

WebLogic Serverでインストールされていないサード・パーティのJDBCドライバを使用するには、DOMAIN_HOME/libディレクトリに追加します。ここで、DOMAIN_HOMEは、WebLogic Serverドメインが構成されているディレクトリです。デフォルトのパスは、ORACLE_HOME/user_projects/domainsです。

詳細は、『Oracle WebLogic Serverアプリケーションの開発』のドメイン/libディレクトリへのJARの追加を参照してください。

ノート:

以前のリリースでは、新しいJDBCドライバを追加する場合、または置き換えるJARの名前が元のJARと異なるJDBCドライバを更新する場合、WebLogic Serverのクラスパスを更新してJDBCドライバ・クラスの場所を含める必要がありました。これは必要なくなりました。

DOMAIN_HOME/libのサード・パーティJARファイルの使用

DOMAIN_HOME/libのサード・パーティJARファイルの使用は、WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバでのみサポートされます。WebLogic Serverとともにインストールされるドライバの詳細は、「WebLogic ServerとともにインストールされるJDBCドライバ」を参照してください。

DOMAIN_HOME/libディレクトリのサード・パーティJARファイルを使用する場合、次の点に注意してください。

  • 作成されるクラス・ローダーは、WebLogic Serverのシステム・クラスパス・クラス・ローダーの子です。

  • このディレクトリのJARに含まれるクラスは、サーバーのJava EEアプリケーション(EARファイルなど)にのみ認識されます。

  • WebLogic Server管理コンソールおよびWLSTオンラインを使用して、JARファイルを構成および管理できます。(データ・ソースはデプロイされないため、WLSTオフラインを使用することも可能です。)

  • これらのJARファイルは、スタンドアロン・クライアント(t3 RMIクライアントなど)やスタンドアロン・アプリケーション(java utils.Schemaなど)から実行すると動作しません。

  • これらのJARファイルは、アプリケーション・データ・アクセスではサポートされません。『Oracle WebLogic Server 12.2.1の新機能』のデータベースの相互運用性を参照してください。

  • 複数のドメイン・ディレクトリ(共有ファイル・システムのない複数のマシン)が関連する場合、各ドメイン・ディレクトリの/libにJARファイルをインストールする必要があります。

  • WebLogic Serverでは、サード・パーティ・ドライバで呼び出されるメソッド(TimesTen abortDB2 setDB2ClientUserなど)を使用できます。

データ・ソースのサポート

/libにインストールされたサード・パーティJARファイルは、次のものと組み合せて使用できます。

  • WebLogic Serverシステム・リソースでサポートされるすべてのデータ・ソース・タイプ(汎用、マルチ・データ・ソース、Active GridLink、プロキシ・データ・ソースなど)。UCP JARはサード・パーティではないため、UCPデータ・ソースは適用されません。

  • EARまたはWARでパッケージ化されたデータ・ソース。

  • EARまたはWARで定義されたJava EE 6データ・ソース定義。

JDBCメソッドではありませんが、/libのサード・パーティJARファイルを使用すると、マルチ・データ・ソースのフェイルオーバー、接続、リプレイおよび収集のように、WebLogic Serverデータ・ソース・コールバックに適用されます。

例19-1 /libのサード・パーティJARファイルの使用の例

次の例は、getversion.warというスタンドアロンWARファイルに含まれるファイルを示しています。Derby JARファイルは、WEB-INF/libまたはDOMAIN_HOME/lib (あるいはその両方)にあります。クラス・ファイルは、コンパイルされてWEB-INF/classes/demo/GetVersion.classにインストールされます。

<web-app>
  <welcome-file-list>
    <welcome-file>welcome.jsp</welcome-file>
  </welcome-file-list>
  <display-name>GetVersion</display-name>
  <servlet>
    <description></description>
    <display-name>GetVersion</display-name>
    <servlet-name>GetVersion</servlet-name>
    <servlet-class>
       demo.GetVersion
    </servlet-class>
  </servlet>
<!-- Data source description can go in the web.xml descriptor or as an annotation in the java code - see below
  <data-source>
    <name>java:global/DSD</name>
    <class-name>org.apache.derby.jdbc.ClientDataSource</class-name>
    <port-number>1527</port-number>
    <server-name>localhost</server-name>
    <database-name>examples</database-name>
    <transactional>false</transactional>
  </data-source>
-->
</web-app>
 
WEB-INF/weblogic.xml
 
<weblogic-web-app>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
</weblogic-web-app>
 
Java file
 
package demo;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.annotation.sql.DataSourceDefinition;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
 
@DataSourceDefinition(name="java:global/DSD",
className="org.apache.derby.jdbc.ClientDataSource",
portNumber=1527,
serverName="localhost",
databaseName="examples",
transactional=false
)
@WebServlet(urlPatterns = "/GetVersion")
public class GetVersion extends javax.servlet.http.HttpServlet
  implements javax.servlet.Servlet {
  @Resource(lookup = "java:global/DSD")
  private DataSource ds;
 
  public GetVersion() {
    super();
  }
 
  protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }
 
  protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
 
    PrintWriter writer = response.getWriter();
    writer.println("<html>");
    writer.println("<head><title>GetVersion</title></head>");
    writer.println("<body>" + doit() +"</body>");
    writer.println("</html>");
    writer.close();
  }
 
  private String doit() {
    String ret = "FAILED";
    Connection conn = null;
    try {
      conn = ds.getConnection();
      ret = "Connection obtained with version= " +
        conn.getMetaData().getDriverVersion();
    } catch(Exception e) {
      e.printStackTrace();
    } finally {
      try {
        if (conn != null)
          conn.close();
      } catch (Exception ignore) {}
    }
    return ret;
  }
}

Oracle Thinドライバのグローバリゼーション・サポート

Oracle Thinドライバのグローバリゼーション・サポートのために、オラクル社からorai18n.jarファイルが提供されています。このファイルはnls_charset.zipを置き換えます。

Oracleのオブジェクト型およびコレクションにおいて、CHARおよびNCHAR型のデータに、US7ASCIIWE8DECWE8ISO8859P1およびUTF8以外の文字セットを使用する場合、CLASSPATHorai18n.jarおよびorai18n-mapping.jarを含める必要があります。

orai18n.jarおよびorai18n-mapping.jarは、WebLogic Serverインストールにより、ORACLE_HOME\oracle_common\modules\oracle.nlsrtl_12.1.0フォルダに格納されます。これらのファイルは、weblogic.jar manifestマニフェスト・ファイルからは参照されないため、使用前にCLASSPATHに追加する必要があります。

デバッグ・モードでのOracle Thinドライバの使用方法

ORACLE_HOME\oracle_common\modules\oracle.jdbcフォルダには、ojdbc8_g.jar(JDK8用)ファイルがあります。これは、デバッグおよび追跡をサポートするクラスを備えたOracle Thinドライバのバージョンです。Oracle Thinドライバをデバッグ・モードで使用するには、CLASSPATHの先頭に、これらのファイルへのパスを追加します。