Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.2.1) E70015-01 |
|
前 |
次 |
この章では、Oracle WebLogic ServerでのJDBCドライバの設定方法および使用方法を説明します。
この章には次の項が含まれます:
WebLogic Serverでは、次の要件を満たすJDBC対応ドライバ-を使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。
ドライバはスレッドセーフであることが必要です。
トランザクションをサポートする環境でドライバを使用する場合は、標準のJDBCトランザクション・コール(setAutoCommit()
およびsetTransactionIsolation()
など)を実装する必要があります。
SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。
WebLogic Serverの機能によってデータベースが内部データ記憶に使用される場合は、アプリケーション・データ・アクセスに使用される場合よりもデータベースのサポートが制限されます。次のWebLogic Serverの機能では、内部データ記憶が必要です。
コンテナ管理の永続性(CMP)
行セット
JMS/JDBC永続性、およびWebLogic JDBCストアの使用
JDBCセッション永続性
RDBMSセキュリティ・プロバイダ
(シングルトン・サービスおよびサーバーの移行用)データベース・リース
JTAロギング・ラスト・リソース(LLR)最適化
Oracle Thinドライバのバージョン12cは、Oracle WebLogic Serverとともにインストールされます。
ojdbc7.jar
、ojdbc7_g.jar
、ojdbc7dms.jar
(JDK7の場合)
ojdbc6.jar
、ojdbc6_g.jar
、ojdbc6dms.jar
(JDK 6の場合)
注意: WebLogic Serverとともに、WebLogicブランドのDataDirectのドライバもインストールされます。詳細は、『Oracle WebLogic Server JDBCアプリケーションの開発』のWebLogicブランドのDataDirectドライバの使用に関する項を参照してください。 |
WebLogic Serverとともに、Oracle Thinドライバに加えて、mySQL 5.1.x (mysql-connector-java-commercial-5.1.22-bin.jar
) JDBCドライバもインストールされます。
このドライバは、$ORACLE_HOME/oracle_common/modules
のサブディレクトリにインストールされます。weblogic.jar
のマニフェストには、このファイルがリストされており、そのためこのファイルはweblogic.jar
のロード時(サーバーの起動時)にロードされます。したがって、このJDBCドライバをCLASSPATH
に追加する必要はありません。WebLogic ServerとともにインストールされないサードパーティJDBCドライバを使用する予定がある場合、それらのドライバをインストールする必要があります。インストール作業には、ドライバ・ファイルへのパスでCLASSPATH
を更新することが含まれます。また、データベース・クライアント・ファイルへのパスでPATH
を更新することも含まれる場合があります。『Oracle WebLogic Serverの新機能』のサポートされる構成に関する項 12.2.1を参照してください。
WebLogic Serverとともにインストールされるドライバの異なるバージョンを使用する予定の場合は、新しいファイルをCLASSPATH
の前に追加できます。
注意: WebLogic Serverではまた、WebLogic ServerサンプルとともにDerby DBMSのバージョンがWL_HOME\common\derby ディレクトリにインストールされます。Derbyは、すべてJavaで作成されたDBMS製品で、WebLogic ServerサンプルのデモンストレーションをサポートするためにWebLogic Serverディストリビューションに含まれています。Derbyの詳細は、http://db.apache.org/derby を参照してください。 |
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ファイルの使用は、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 abort
やDB2 setDB2ClientUser
など)を使用できます。
/lib
にインストールされたサード・パーティJARファイルは、次のものと組み合せて使用できます。
WebLogic Serverシステム・リソースでサポートされるすべてのデータ・ソース・タイプ(汎用、マルチ・データ・ソース、Active GridLink、プロキシ・データ・ソースなど)。UCP JARはサード・パーティではないため、UCPデータ・ソースは適用されません。
EARまたはWARでパッケージ化されたデータ・ソース。
EARまたはWARで定義されたJava EE 6データ・ソース定義。
JDBCメソッドではありませんが、/lib
のサード・パーティJARファイルを使用すると、マルチ・データ・ソースのフェイルオーバー、接続、リプレイおよび収集のように、WebLogic Serverデータ・ソース・コールバックに適用されます。
次の例は、getversion.war
というスタンドアロンWARファイルに含まれるファイルを示しています。Derby JARファイルは、WEB-INF/lib
またはDOMAIN_HOME/lib
(あるいはその両方)にあります。クラス・ファイルは、コンパイルされてWEB-INF/classes/demo/GetVersion.class
にインストールされます。
例17-1 /libディレクトリのサード・パーティJARファイルの使用の例
<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ではnls_charset.zip
にかわるorai18n.jar
ファイルを提供しています。Oracleのオブジェクト型およびコレクションにおいて、CHARおよびNCHAR型のデータに、US7ASCII、WE8DEC、WE8ISO8859P1およびUTF8以外の文字セットを使用する場合、CLASSPATH
にorai18n.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_HOME
\oracle_common\modules\oracle.jdbc_12.1.0
フォルダには、ojdbc6_g.jar
ファイル(JDK 6の場合)とojdbc7_g.jar
ファイル(JDK7の場合)があります。これらは、デバッグおよび追跡をサポートするクラスを備えたOracle Thinドライバのバージョンです。Oracle Thinドライバをデバッグ・モードで使用するには、CLASSPATH
の先頭に、これらのファイルへのパスを追加します。