この章には次の項が含まれます:
ドライバはスレッドセーフであることが必要です。
トランザクションをサポートする環境でドライバを使用する場合は、標準のJDBCトランザクション・コール(setAutoCommit()およびsetTransactionIsolation()など)を実装する必要があります。
SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。
コンテナ管理の永続性(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.2の新機能』のサポートされる構成を参照してください
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ファイルの使用
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データ・ソース・コールバックに適用されます。
例17-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では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に追加する必要があります。