|
DataDirect の Oracle WebLogic Type 4 JDBC ドライバを使用すると、インターネットやイントラネットへアクセスする業界最先端のデータ ストアに対して、WebLogic Server 経由で高パフォーマンスな JDBC アクセスを行えます。WebLogic Type 4 JDBC ドライバは Java 環境に合わせて最適化されているので、Java テクノロジを組み込んだり、既存システムの機能およびパフォーマンスを拡張したりできます。
DataDirect の WebLogic Type 4 JDBC ドライバは、以下のような特長を持つ実績のあるドライバです。
以下の節では、WebLogic Type 4 JDBC ドライバについて詳しく説明します。
WebLogic Type 4 JDBC ドライバは JDBC 3.0 仕様に準拠しています。また、JDBC 4.0 仕様の以下の機能もサポートしています。
詳細については、「JDBC のサポート」を参照してください。
WebLogic Type 4 JDBC ドライバは、WebLogic Server と共に WL_HOME
\server\lib
フォルダにインストールされます。WL_HOME
は WebLogic Server をインストールしたディレクトリです。ドライバ クラス ファイルは weblogic.jar
のマニフェスト クラスパスに含まれているので、ドライバは自動的にサーバのクラスパスに追加されます。
注意 : | WebLogic Server の完全インストールを実行すると、WebLogic Type 4 JDBC ドライバがデフォルトでインストールされます。カスタム インストールを選択した場合は、WebLogic JDBC ドライバ オプションが選択されている (チェック ボックスがオンになっている) ことを確認してください。このオプションが選択されていない場合、ドライバはインストールされません。 |
WebLogic Type 4 JDBC ドライバは WebLogic のクライアント jar ファイル (wlclient.jar
など) のマニフェスト クラスパスには含まれていません。WebLogic クライアントでドライバを使用するには、以下のファイルをクライアントにコピーし、クライアントのクラスパスに追加する必要があります。
表 2-1 に、各 WebLogic Type 4 JDBC ドライバでサポートされるデータベースを示します。
|
|
注意 : | 表 2-1 に、各 WebLogic Type 4 JDBC ドライバでサポートされるデータベースを示します。これらは、WebLogic Server でサポートされるデータベースとは異なりますのでご注意ください。WebLogic Server でサポートされるデータベースのリストについては、「サポート対象のコンフィグレーション」を参照してください。 |
WebLogic Type 4 JDBC ドライバを使用するには、WebLogic Server コンフィグレーションに JDBC データ ソースを作成してから、この JDBC ドライバを選択してデータ ソース内に物理的なデータベース接続を作成します。それによって、アプリケーションが JNDI ツリーでデータ ソースをルックアップして、接続を要求できるようになります。
データ ソースの接続の接続プロパティは、WebLogic Server Administration Console、コマンドライン インタフェース、または JMX API を使用して指定します。接続プロパティは DBMS によって異なります。各 WebLogic Type 4 JDBC ドライバに固有の接続プロパティのリストについては、該当するドライバの章を参照してください。
JDBC データ ソースでデータベース接続を作成するときに、データベースが使用できない場合、デフォルトのシステム タイムアウトが経過するまでリクエストがハングすることがあります。一部のシステムではこの時間が 9 分間に渡る場合もあります。リクエストは JDBC データ ソースの各接続にハングします。このハング時間を最小限に抑えるために、接続に LoginTimeout
値を指定できます。すべての WebLogic Type 4 JDBC ドライバは LoginTimeout
接続プロパティをサポートしています。LoginTimeout
接続プロパティを指定すると、接続がすぐに作成されない場合、リクエストは指定した時間だけ待機します。接続が指定した時間内に作成されない場合、ドライバは SQL 例外を送出します。
接続プロパティのコンフィグレーションの詳細については、該当するドライバの章を参照してください。
WebLogic Type 4 JDBC ドライバでは、IPv4 および IPv6 形式の IP (インターネット プロトコル) アドレスがサポートされます。IPv6 アドレスは、特定のバージョンのデータベースに接続する場合にのみサポートされます (表 2-2 を参照)。また、IPv6 アドレスに接続するためには、Windows では J2SE 5.0 以上、UNIX/Linux では J2SE 1.4 が必要になります。
ネットワークで名前付きサーバがサポートされている場合は、接続 URL またはデータ ソースに指定されたサーバ名を、IPv4 または IPv6 アドレスに解決できます。たとえば、次の URL のサーバ名 DB2Server を、いずれかのタイプのアドレスに解決できます。
jdbc:bea:db2://DB2Server:50000;DatabaseName=jdbc;User=test;
Password=secret
また、接続 URL のサーバ名部分に、IPv4 または IPv6 形式のアドレスを指定することもできます。たとえば、次の接続 URL では、IPv4 形式でサーバを指定しています。
jdbc:bea:db2://123.456.78.90:50000;DatabaseName=jdbc;User=test;
Password=secret
ServerName
データ ソース プロパティを使用して、いずれかの形式でアドレスを指定することも可能です。次のデータ ソース定義では、IPv6 形式でサーバ名を指定しています。
DB2DataSource mds = new DB2DataSource();
mds.setDescription("My DB2DataSource");
mds.setServerName("[ABCD:EF01:2345:6789:ABCD:EF01:2345:6789]");
mds.setPortNumber(50000);
...
注意 : | 接続 URL やデータ ソースで IPv6 アドレスを指定する場合は、そのアドレスを括弧で囲む必要があります。 |
WebLogic Type 4 JDBC ドライバでは、通常の IPv6 形式に加え、圧縮したアドレスや IPv4 と IPv6 を組み合わせたアドレスなど、IPv6 の代替形式もサポートされます。たとえば、次の接続 URL では IPv6 形式でサーバを指定していますが、連続するゼロのビットを圧縮する構文が使用されています。
jdbc:bea:db2://[2001:DB8:0:0:8:800:200C:417A]:50000;DatabaseName=jdbc;
User=test;Password=secret
次の接続 URL でも IPv6 形式でサーバを指定していますが、IPv4 と IPv6 を組み合わせたアドレスが使用されています。
jdbc:bea:db2://[0000:0000:0000:0000:0000:FFFF:123.456.78.90]:50000;
DatabaseName=jdbc;User=test;Password=secret
http://tools.ietf.org/html/rfc4291#section-2.2
WebLogic Type 4 JDBC ドライバでは、セキュリティ機能として認証とデータの暗号化がサポートされます。
ほとんどのコンピュータ システムでは、ユーザの身元を証明するものとしてパスワードが使用されています。このパスワードは、ネットワーク上を転送することが多く、悪意のあるハッカーによって傍受されるおそれがあります。パスワードはユーザを識別するための秘匿情報であるため、パスワードを知っていれば誰でもそのユーザになりすますことができます。認証を使用すると、ユーザの識別情報を保護できます。WebLogic Type 4 JDBC ドライバでは、以下の認証方法がサポートされます。
表 2-3 に、WebLogic Type 4 JDBC ドライバでサポートされる認証方法を示します。
ドライバに Kerberos 認証をコンフィグレーションする前に、使用している環境が 表 2-4 の要件を満たしていることを確認してください。
|
|
Kerberos 認証を使用するためには、WebLogic JDBC Type 4 ドライバのインストール後に、ある程度のコンフィグレーションが必要になります。認証のコンフィグレーションの詳細については、個別のドライバの章を参照してください。
ドライバに NTLM 認証をコンフィグレーションする前に、使用している環境が 表 2-5 の要件を満たしていることを確認してください。
NTLM 認証を使用するためには、WebLogic JDBC Type 4 ドライバのインストール後に、最低限のコンフィグレーションが必要になります。認証のコンフィグレーションの詳細については、個別のドライバの章を参照してください。
データベース接続がデータを暗号化するようにコンフィグレーションされていない場合、ネットワーク上のデータは高速転送用に設計された形式で転送されるため、簡単に傍受されて解読されるおそれがあります。この形式では傍受を完全に防ぐことはできないため、データを暗号化することでより安全に転送することをお勧めします。データの暗号化は、たとえば以下のような状況で使用します。
注意 : | データの暗号化と復号化により余分なオーバーヘッド (主に CPU の使用率) がかかるため、パフォーマンスが低下する場合があります。 |
WebLogic Type 4 JDBC ドライバでは、以下の暗号化方法がサポートされます。
表 2-6 に、WebLogic Type 4 JDBC ドライバでサポートされるデータ暗号化方法を示します。
|
SSL では、クライアントとサーバの間で、この両者のみが復号化できるように暗号化されたデータを送受信します。暗号化の条件については、「SSL ハンドシェーク」と呼ばれる一連のイベントでネゴシエートします。ハンドシェークでは、以下のタイプの認証が実施されます。
SSL のコンフィグレーションの詳細については、個別のドライバの章を参照してください。
クライアントが接続を要求すると、サーバは認否の決定に使用するパブリック証明書をクライアントに提示します。クライアントは、この証明書の発行者を、信頼性のある認証局 (CA) のリストと照合します。このリストは、トラストストアと呼ばれるクライアント上の暗号化ファイルに保持されています。クライアントは、必要に応じて証明書のサブジェクト (オーナー) を確認できます。証明書がトラストストア内の信頼性のある CA に一致すると (そして証明書のサブジェクトがアプリケーション側の想定値に一致すると)、クライアントとサーバの間に暗号化された接続が確立されます。証明書が一致しない場合は、接続に失敗して例外が送出されます。
証明書の発行者とトラストストアの内容を照合するためには、ドライバがトラストストアを見つけ、適切なパスワードでトラストストアのロックを解除できなければなりません。トラストストアの情報は、以下のいずれかの方法で指定できます。
java -Djavax.net.ssl.trustStore=C:\Certificates\MyTruststore
java -Djavax.net.ssl.trustStorePassword=MyTruststorePassword
この方法では、JVM 内に作成されたすべての SSL ソケットの値が設定されます。
TrustStore=C:\Certficates\MyTruststore
TrustStorePassword=MyTruststorePassword
TrustStore および TrustStorePassword プロパティに値を指定すると、それらの値によって Java システム プロパティの値がオーバーライドされます。この方法で、特定の接続にのみ使用するトラストストア ファイルを指定できます。
別の方法として、信頼性のある CA が発行した証明書でなくても、サーバから返されたすべての証明書を信頼するように WebLogic Type 4 JDBC ドライバをコンフィグレーションすることもできます。テスト環境においては、サーバから送信されたすべての証明書をドライバが信頼するようにすることで、テスト環境内のクライアントごとにトラストストア情報を指定する手間を省くことができます。ドライバがサーバからのすべての証明書を信頼するようにコンフィグレーションした場合、証明書内の発行者情報は無視されます。
サーバを SSL クライアント認証用にコンフィグレーションすると、サーバは識別情報を提供した後、クライアントにその識別情報を検証するよう要求します。クライアントは、SSL サーバ認証の場合と同じように、認否の決定に使用するパブリック証明書をサーバに送信します。クライアントのパブリック証明書は、「キーストア」と呼ばれる暗号化されたファイルに保持されます。
ドライバは、キーストアを見つけ、適切なキーストア パスワードでキーストアのロックを解除できなければなりません。使用するキーストアのタイプによっては、証明書およびそのプライベート キーにアクセスするためのパスワードを使用して、キーストア エントリのロックも解除する必要があります。
WebLogic Type 4 JDBC ドライバでは、以下のタイプのキーストアを使用できます。
java -Djavax.net.ssl.keyStore=C:\Certificates\MyKeystore
java -Djavax.net.ssl.keyStorePassword=MyKeystorePassword
この方法では、JVM 内に作成されたすべての SSL ソケットの値が設定されます。
注意 : | javax.net.ssl.keyStore Java システム プロパティで指定したキーストアが JKS で、キーストア エントリのパスワードがキーストアのパスワードと異なる場合は、KeyPassword 接続プロパティにキーストア エントリのパスワードを指定する必要があります。次に例を示します。 |
注意 : | KeyPassword=MyKeyPassword |
KeyStore=C:\Certficates\MyKeyStore
KeyStorePassword=MyKeystorePassword
注意 : | KeyStore 接続プロパティで指定したキーストアが JKS で、キーストア エントリのパスワードがキーストアのパスワードと異なる場合は、KeyPassword 接続プロパティにキーストア エントリのパスワードを指定する必要があります。次に例を示します。 |
注意 : | KeyPassword=MyKeyPassword |
KeyStore および KeyStorePassword プロパティに値を指定すると、それらの値によって Java システム プロパティの値がオーバーライドされます。この方法で、特定の接続にのみ使用するキーストア ファイルを指定できます。
Java セキュリティ マネージャを有効にした状態で WebLogic Type 4 JDBC ドライバを使用する場合は、ドメインのセキュリティ ポリシー ファイルに特定のパーミッションを設定する必要があります。WebLogic Server には、編集および使用可能なサンプル セキュリティ ポリシー ファイルが用意されています。このファイルは、WL_HOME
\server\lib\weblogic.policy
にあります。weblogic.policy
ファイルには、ドライバに必要なほとんどすべてのパーミッションが含まれています。ただし、一時ファイルおよび tnsnames.ora
にアクセスするパーミッションは含まれていません。weblogic.policy
ファイルを変更せずに使用する場合は、それ以上のパーミッションを付与する必要はありません。別のセキュリティ ポリシー ファイルを使用する場合や、追加のパーミッションを必要とするドライバ機能を使用する場合は、これ以降の節を参照して必要となるパーミッションを追加してください。
注意 : | Java 2 プラグインで実行する Web ブラウザ アプレットは常に、Java セキュリティ マネージャを有効にした状態で JVM で実行します。 |
WebLogic Server で Java セキュリティ マネージャを使用する場合は、『WebLogic Security プログラマーズ ガイド』の「Java セキュリティを使用しての WebLogic リソースの保護」を参照してください。
データベース サーバへの接続を確立するには、以下の例で示すように WebLogic Type 4 JDBC ドライバにパーミッションを付与する必要があります。wlbase.jar
ファイルおよび wlutil.jar
ファイルに加え、使用しているデータベース管理システム用の JAR ファイルにもパーミッションを付与する必要があります。パーミッションは、ディレクトリ内のすべての JAR ファイルに付与したり、特定のファイルにのみ付与したりできます。
ディレクトリ内のすべての JAR ファイルに付与する場合は次のように記述します。
grant codeBase "file:WL_HOME
${/}server${/}lib${/}-
" {
permission java.net.SocketPermission "*", "connect";
};
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wlbase.jar
" {
permission java.net.SocketPermission "*", "connect";
};
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wlutil.jar
" {
permission java.net.SocketPermission "*", "connect";
};
さらに、以下のうち 1 つまたは複数のパーミッションを付与します。
//DB2 の場合 :
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wldb2.jar
" {
permission java.net.SocketPermission "*", "connect";
};
//Informix の場合 :
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wlinformix.jar
" {
permission java.net.SocketPermission "*", "connect";
};
//MS SQL Server の場合 :
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wlsqlserver.jar
" {
permission java.net.SocketPermission "*", "connect";
};
//Oracle の場合 :
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wloracle.jar
" {
permission java.net.SocketPermission "*", "connect";
};
//Sybase の場合 :
grant codeBase "file:WL_HOME
${/}server${/}lib${/}wlsybase.jar
" {
permission java.net.SocketPermission "*", "connect";
};
WL_HOME
は、WebLogic Server のインストール先ディレクトリです。
Microsoft SQL Server の名前付きインスタンスを使用する場合は、次の例のように listen アクションと accept アクションのパーミッションも付与する必要があります。
grant codeBase "file:WL_HOME
${/}server${/}lib${/}-
" {
permission java.net.SocketPermission "*", "listen, connect, accept";
};
WebLogic Type 4 JDBC ドライバが、特定の操作を実行するためにさまざまな Java プロパティの値を読み取ることができるようにするには、次の例に示すようにパーミッションを付与する必要があります。
grant codeBase "file:WL_HOME
${/}server${/}lib${/}-
" {
permission java.util.PropertyPermission "false", "read";
permission java.util.PropertyPermission "user.name", "read";
permission java.util.PropertyPermission "user.language", "read";
permission java.util.PropertyPermission "user.country", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "java.specification.version",
"read";
};
WL_HOME
は、WebLogic Server のインストール先ディレクトリです。
「接続を確立するためのパーミッション」で説明したように、これらのパーミッションを個別のファイルに付与することもできます。
JVM のコンフィグレーションに指定した一時ディレクトリへのアクセスは、セキュリティ ポリシー ファイルで付与する必要があります。通常は、JVM で使用されるセキュリティ ポリシー ファイルを使用します。このファイルは、JAVA_HOME
/jre/lib/security
フォルダにあります。インセンシティブなスクロール可能カーソルを使用する場合や、DatabaseMetaData 結果セットのソートをクライアント サイドで実行する場合は、一時ファイルへのアクセス パーミッションをすべてのコード ベースに付与する必要があります。次の例では、C:\TEMP
ディレクトリへのアクセス パーミッションを付与しています。
// すべてのドメインに付与するパーミッション
grant codeBase "file:WL_HOME
${/}server${/}lib${/}-
" {
// 一時ファイルを作成および削除するためのパーミッション
// 一時ディレクトリは使用している環境に合わせて変更すること
permission java.io.FilePermission "C:\\TEMP\\-", "read,write,delete";
};
WL_HOME
は、WebLogic Server のインストール先ディレクトリです。
「接続を確立するためのパーミッション」で説明したように、これらのパーミッションを個別のファイルに付与することもできます。
Oracle の tnsnames.ora ファイルを使用して WebLogic Type 4 Oracle ドライバに接続する場合は、Java 2 Platform のセキュリティ ポリシー ファイルで tnsnames.ora ファイルの読み込みアクセスのパーミッションをドライバに付与する必要があります。
grant codeBase "file:WL_HOME
${/}server${/}lib${/}-
" {
permission java.io.FilePermission "C:\\oracle\\ora92\\network\\admin\\
tnsnames.ora", "read";
};
WL_HOME
は、WebLogic Server のインストール先ディレクトリです。
「接続を確立するためのパーミッション」で説明したように、これらのパーミッションを個別のファイルに付与することもできます。
tnsnames.ora ファイルを使用して Oracle データベースに接続する方法の詳細については、「パフォーマンスに関する考慮事項」を参照してください。
Kerberos 認証をサポートする WebLogic Type 4 JDBC ドライバで Kerberos 認証を使用するには、Java 2 プラットフォームのセキュリティ ポリシー ファイルで、アプリケーションとドライバのコード ベースにセキュリティ パーミッションを付与する必要があります。以下に例を示します。
WebLogic Type 4 JDBC ドライバで Kerberos 認証を使用する方法については、適切なドライバの章を参照してください。
grant codeBase "file:/WL_HOME
/server/lib/-" {
permission javax.security.auth.AuthPermission
"createLoginContext.DDTEK-JDBC";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.kerberos.ServicePermission
"krbtgt/your_realm
@your_realm
", "initiate";
permission javax.security.auth.kerberos.ServicePermission
"principal_name
/db_hostname
@your_realm
", "initiate";
};
grant codeBase "file:/WL_HOME
/server/lib
/-" {
permission javax.security.auth.AuthPermission
"createLoginContext.DDTEK-JDBC";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.kerberos.ServicePermission
"krbtgt/your_realm
@your_realm
", "initiate";
permission javax.security.auth.kerberos.ServicePermission
"principal_name
/db_hostname@your_realm
", "initiate";
};
grant codeBase "file:/WL_HOME/server
/lib/-" {
permission javax.security.auth.AuthPermission
"createLoginContext.DDTEK-JDBC";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.kerberos.ServicePermission
"krbtgt/your_realm
@your_realm
", "initiate";
permission javax.security.auth.kerberos.ServicePermission
"MSSQLSvc/db_hostname
:SQLServer_port
@your_realm
", "initiate";
};
grant codeBase "file:/WL_HOME/server
/lib/-" {
permission javax.security.auth.AuthPermission
"createLoginContext.DDTEK-JDBC";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.kerberos.ServicePermission
"krbtgt/your_realm
@your_realm
", "initiate";
permission javax.security.auth.kerberos.ServicePermission
"principal_name
/db_hostname
@your_realm
", "initiate";
};
WebLogic Type 4 JDBC ドライバは XA をサポートしていますが、XA をサポートするためにデータベースのコンフィグレーションが必要になる場合があります。詳細については、以下の節を参照してください。
WebLogic Type 4 JDBC ドライバを使用して Unicode 対応および Unicode 非対応のデータベースにアクセスする JDBC によって、多言語アプリケーションを任意のオペレーティング システム上で開発できます。Java アプリケーションは、文字列データに関して内部的に UTF-16 Unicode エンコーディングを使用します。データを取得する場合、WebLogic Type 4 JDBC ドライバはデータベースで使用されている文字エンコーディングを UTF-16 に自動的に変換します。同様に、データベースに対してデータの挿入や更新を行う場合、ドライバは UTF-16 エンコーディングからデータベースで使用されている文字エンコーディングに自動的に変換します。
JDBC API は、Unicode (UTF-16) または ASCII でエンコードされた文字データを取得および保存するメカニズムを提供します。また、Java の文字列オブジェクトには、UTF-16 エンコーディングと一般的な文字エンコーディングとの間で文字列データを変換するメソッドが含まれています。
WebLogic Type 4 JDBC ドライバでは、SQLException を送出することで呼び出し側アプリケーションにエラーを報告します。各 SQLException には、以下の情報が含まれています。
WebLogic Type 4 JDBC ドライバによって生成されるエラーは次の形式になります。
[BEA][WebLogic Type 4 JDBC driver name]message
[BEA][SQLServer JDBC Driver]Timeout expired.
場合によっては、アプリケーションからの最後の JDBC 呼び出しをチェックしたり、推奨されるアクションについて JDBC 仕様を参照したりする必要があります。
[BEA][WebLogic Type 4 JDBC driver name][DBMS name] message
[BEA][SQL Server JDBC Driver][SQL Server] Invalid Object Name.
ネイティブ エラー コードを使用して、考えられるエラーの原因について詳細を調べます。詳細については、データベースのドキュメントを参照してください。