15 WebLogic ServerでのJDBCドライバの使用方法
- JDBCドライバのサポート
WebLogic Serverでは、JDBC対応ドライバを使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。 - WebLogic ServerとともにインストールされるJDBCドライバ
Oracle JDBC Thinドライバ23aiは、Oracle WebLogic Server 14.1.2.0.0とともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL Connector/J 8.0 (mysql-connector-j-8.2.0.jar
) JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。 - WebLogic Serverとともにインストールされていないサード・パーティJDBCドライバの追加
WebLogic Serverにインストールされていないサード・パーティのJDBCドライバを使用するには、DOMAIN_HOME/lib
ディレクトリに追加します。 - Oracle Thinドライバのグローバリゼーション・サポート
Oracle Thinドライバのグローバリゼーション・サポートのために、オラクル社からorai18n.jar
ファイルが提供されています。
JDBCドライバのサポート
WebLogic Serverでは、JDBC対応ドライバ-を使用した、任意のデータベースへのアプリケーション・データ・アクセスがサポートされます。
-
ドライバはスレッドセーフであることが必要です。
-
トランザクションをサポートする環境でドライバを使用する場合は、標準のJDBCトランザクション・コール(
setAutoCommit()
およびsetTransactionIsolation()
など)を実装する必要があります。 -
SerializableまたはRemoteインタフェースを実装しない場合、ドライバはRMIクライアント・アプリケーションにオブジェクトを渡すことができません。
-
コンテナ管理の永続性(CMP)
-
行セット
-
JMS/JDBC永続性、およびWebLogic JDBCストアの使用
-
JDBCセッション永続性
-
RDBMSセキュリティ・プロバイダ
-
(シングルトン・サービスおよびサーバーの移行用)データベース・リース
-
JTAロギング・ラスト・リソース(LLR)最適化
WebLogic ServerとともにインストールされるJDBCドライバ
Oracle JDBC Thinドライバ23aiは、Oracle WebLogic Server 14.1.2.0.0とともにインストールされます。WebLogic Serverとともに、Oracle Thinドライバに加え、mySQL Connector/J 8.0 (mysql-connector-j-8.2.0.jar
) JDBCドライバ、WebLogicブランドのDataDirectドライバもインストールされます。
ドライバ・ファイルの名前は、ojdbc11.jar
です(JDK17およびJDK21の場合)。
ノート:
『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
を参照してください。
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に含まれるクラスは、サーバーのJakarta EEアプリケーション(EARファイルなど)にのみ認識されます。
-
WebLogicリモート・コンソールおよびWLSTオンラインを使用して、JARファイルを構成および管理できます。(データ・ソースはデプロイされないため、WLSTオフラインを使用することも可能です。)
-
これらのJARファイルは、スタンドアロン・クライアント(t3 RMIクライアントなど)やスタンドアロン・アプリケーション(
java utils.Schema
など)から実行すると動作しません。 -
複数のドメイン・ディレクトリ(共有ファイル・システムのない複数のマシン)が関連する場合、各ドメイン・ディレクトリの
/lib
にJARファイルをインストールする必要があります。 -
WebLogic Serverでは、サード・パーティ・ドライバで呼び出されるメソッド(TimesTen
abort
やDB2 setDB2ClientUser
など)を使用できます。
ノート:
これらのJARファイルでサポートされるWebLogic Serverの機能の詳細は、『Oracle WebLogic Serverの新機能』のデータベースの相互運用性に関する項、および特定のデータベース・ドライバとDBバージョンの認証情報については、適切なバージョンの「Oracle Fusion Middlewareのサポートされるシステム構成」マトリックス・ドキュメントを参照してください。
データ・ソースのサポート
/lib
にインストールされたサード・パーティJARファイルは、次のものと組み合せて使用できます。
-
WebLogic Serverシステム・リソースでサポートされるすべてのデータ・ソース・タイプ(汎用、マルチ・データ・ソース、Active GridLinkなど)。UCP JARはサード・パーティではないため、ユニバーサル接続プール・データ・ソースは該当しません。
-
EARまたはWARでパッケージ化されたデータ・ソース。
-
EARまたはWARで定義されたJakarta EE 8データ・ソース定義。
JDBCメソッドではありませんが、/lib
のサード・パーティJARファイルの使用は、マルチ・データ・ソースのフェイルオーバー、接続、リプレイおよび収集のような、WebLogic Serverデータ・ソース・コールバックに適用されます。
例15-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ドライバのグローバリゼーション・サポート
orai18n.jar
ファイルを提供しており、このファイルがnls_charset.zip
に取って代わります。
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
フォルダに格納されます。これらのファイルは、weblogic.jar manifestマニフェスト・ファイルからは参照されない
ため、使用前にCLASSPATH
に追加する必要があります。