Type 4 JDBC ドライバ

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Type 4 JDBC ドライバの使い方

DataDirect の Type 4 JDBC ドライバを使用すると、インターネットやイントラネットへアクセスする業界最先端のデータ ストアに対して、Oracle CEP 経由で高パフォーマンスな JDBC アクセスを行えます。Type 4 JDBC ドライバは Java 環境に合わせて最適化されているので、Java テクノロジを組み込んだり、既存システムの機能およびパフォーマンスを拡張したりできます。

DataDirect の Oracle CEP Type 4 JDBC ドライバは、以下のような特長を持つ実績のあるドライバです。

以下の節では、Type 4 JDBC ドライバについて詳しく説明します。

 


JDBC 仕様の準拠

Type 4 JDBC ドライバは JDBC 3.0 仕様に準拠しています。また、JDBC 4.0 仕様の以下の機能もサポートしています。

詳細については、「JDBC のサポート」を参照してください。

 


インストール

Type 4 JDBC ドライバは、Oracle CEP とともに自動的にインストールされ、サーバのクラスパスに自動的に追加されます。

 


サポートするデータベース

表 2-1 に、各 Type 4 JDBC ドライバでサポートされるデータベースを示します。

表 2-1 サポートするデータベース
ドライバ
サポートするデータベース
SQL Server
  • Microsoft SQL Server 2005
  • Microsoft SQL Server 2000
  • Microsoft SQL Server 2000 Desktop Engine (MSDE 2000)
  • SQL Server 2000 Enterprise Edition (64 ビット)
  • Microsoft SQL Server 7.0

 


JDBC データ ソースを介した接続

Type 4 JDBC ドライバを使用するには、Oracle CEP コンフィグレーションに JDBC データ ソースを作成してから、この JDBC ドライバを選択してデータ ソース内に物理的なデータベース接続を作成します。これにより、アプリケーションが JNDI ツリーでデータ ソースをルックアップして、接続を要求できるようになります。

JDBC と Oracle CEP のデータ ソースについては、「リレーショナル データベースへのアクセスのコンフィグレーション」を参照してください。

 


接続プロパティの指定

データ ソースの接続の接続プロパティは、Oracle CEP の config.xml ファイルに指定します。接続プロパティは DBMS によって異なります。各 Type 4 JDBC ドライバに固有の接続プロパティのリストについては、該当するドライバの章を参照してください。

LoginTimeout による接続作成時間の制限

JDBC データ ソースでデータベース接続を作成するときに、データベースが使用できない場合、デフォルトのシステム タイムアウトが経過するまでリクエストがハングすることがあります。一部のシステムではこの時間が 9 分間に渡る場合もあります。リクエストは JDBC データ ソースの各接続にハングします。このハング時間を最小限に抑えるために、接続に LoginTimeout 値を指定できます。すべての Type 4 JDBC ドライバは LoginTimeout 接続プロパティをサポートしています。LoginTimeout 接続プロパティを指定すると、接続がすぐに作成されない場合、リクエストは指定した時間だけ待機します。接続が指定した時間内に作成されない場合、ドライバは SQL 例外を送出します。

接続プロパティのコンフィグレーションの詳細については、該当するドライバの章を参照してください。

 


IP アドレスの使用

Type 4 JDBC ドライバでは、IPv4 および IPv6 形式の IP (インターネット プロトコル) アドレスがサポートされます。IPv6 アドレスは、特定のバージョンのデータベースに接続する場合にのみサポートされます (表 2-2を参照)。また、IPv6 アドレスに接続するためには、Windows では J2SE 5.0 以上、UNIX/Linux では J2SE 1.4 が必要になります。

表 2-2 Type 4 JDBC ドライバでサポートされる IP アドレス形式
ドライバ
IPv4
IPv6
Microsoft SQL Server
サポートされているすべてのバージョン
Microsoft SQL Server 2005 以上

ネットワークで名前付きサーバがサポートされている場合は、接続 URL またはデータ ソースに指定されたサーバ名を、IPv4 または IPv6 アドレスに解決できます。また、接続 URL のサーバ名部分に IPv4 または IPv6 形式でアドレスを指定することもできます。ServerName データ ソース プロパティを使用して、いずれかの形式でアドレスを指定することも可能です。

注意 : 接続 URL やデータ ソースで IPv6 アドレスを指定する場合は、そのアドレスを括弧で囲む必要があります。

Type 4 JDBC ドライバでは、通常の IPv6 形式に加え、圧縮したアドレスや IPv4 と IPv6 を組み合わせたアドレスなど、IPv6 の代替形式もサポートされます。

IPv6 の詳細については、次のページを参照してください。

http://tools.ietf.org/html/rfc4291#section-2.2

 


セキュリティの使用

Type 4 JDBC ドライバでは、セキュリティ機能として認証とデータの暗号化がサポートされます。

認証

ほとんどのコンピュータ システムでは、ユーザの身元を証明するものとしてパスワードが使用されています。このパスワードは、ネットワーク上を転送されることが多く、悪意のあるハッカーによって傍受されるおそれがあります。パスワードはユーザを識別するための秘匿情報であるため、パスワードを知っていれば誰でもそのユーザになりすますことができます。認証を使用すると、ユーザの識別情報を保護できます。Type 4 JDBC ドライバでは、以下の認証方法がサポートされます。

表 2-3 に、Type 4 JDBC ドライバでサポートされる認証方法を示します。

表 2-3 Type 4 JDBC ドライバでサポートされる認証方法
ドライバ
ユーザ ID/
パスワード
Kerberos
クライアント
NTLM
Microsoft SQL Server
X
X1
 
X

1Microsoft SQL Server 2000 以上でサポートされます。

Kerberos 認証の要件

ドライバに Kerberos 認証をコンフィグレーションする前に、使用している環境が 表 2-4 の要件を満たしていることを確認してください。

表 2-4 ドライバに Kerberos 認証をコンフィグレーションする場合の要件
コンポーネント
要件
データベース サーバ
データベース サーバを以下のいずれかのデータベースで実行する必要があります。
Microsoft SQL Server :
  • Microsoft SQL Server 2005
  • Microsoft SQL Server 2000
  • Microsoft SQL Server 2000 Enterprise Edition (64 ビット) Service Pack 2 以上
Kerberos サーバ
Kerberos サーバは、認証に使用するユーザ ID を管理します。Kerberos キー配布センター (KDC) も Kerberos サーバで管理します。Windows Active Directory を使用した場合は、このマシンがドメイン コントローラとしても機能します。
Microsoft SQL Server :
ネットワーク認証は、以下のいずれかのオペレーティング システム上の Windows Active Directory から提供する必要があります。
  • Windows Server 2003
  • Windows 2000 Server Service Pack 3 以上
クライアント
J2SE 1.4.2 以上がインストールされている必要があります。

Kerberos 認証を使用するためには、JDBC Type 4 ドライバのインストール後に、ある程度のコンフィグレーションが必要になります。認証のコンフィグレーションの詳細については、個別のドライバの章を参照してください。

NTLM 認証の要件

ドライバに NTLM 認証をコンフィグレーションする前に、使用している環境が 表 2-5 の要件を満たしていることを確認してください。

表 2-5 ドライバに NTLM 認証をコンフィグレーションする場合の要件
コンポーネント
要件
データベース サーバ
データベース サーバはクライアントを管理している同じドメイン コントローラによって管理され、以下のいずれかのデータベースで実行する必要があります。
Microsoft SQL Server :
  • Microsoft SQL Server 2005
  • Microsoft SQL Server 2000 Service Pack 3 以上
  • Microsoft SQL Server 2000 Enterprise Edition (64 ビット) Service Pack 2 以上
ドメイン コントローラ
ドメイン コントローラはデータベース サーバとクライアントの両方を管理している必要があります。以下のいずれかのオペレーティング システム上の NTLM からネットワーク認証を提供する必要があります。
  • Windows Server 2003
  • Windows 2000 Server Service Pack 3 以上
クライアント
クライアントはデータベース サーバを管理している同じドメイン コントローラによって管理され、以下のいずれかのオペレーティング システムで実行する必要があります。
  • Windows Vista
  • Windows Server 2003
  • Windows XP Service Pack 1 以上
  • Windows 2000 Service Pack 4 以上
  • Windows NT 4.0
また、J2SE 1.3 以上がインストールされている必要があります。

NTLM 認証を使用するためには、JDBC Type 4 ドライバのインストール後に、最低限のコンフィグレーションが必要になります。認証のコンフィグレーションの詳細については、個別のドライバの章を参照してください。

ネットワーク上でのデータの暗号化

データベース接続がデータを暗号化するようにコンフィグレーションされていない場合、ネットワーク上のデータは高速転送用に設計された形式で転送されるため、簡単に傍受されて解読されるおそれがあります。この形式では傍受を完全に防ぐことはできないため、データをより安全に転送するには暗号化することをお勧めします。データの暗号化は、たとえば以下のような状況で使用します。

注意 : データの暗号化と復号化により余分なオーバーヘッド (主に CPU の使用率) がかかるため、パフォーマンスが低下する場合があります。

Type 4 JDBC ドライバでは、以下の暗号化方法がサポートされます。

表 2-6 に、Type 4 JDBC ドライバでサポートされるデータ暗号化方法を示します。

表 2-6 Type 4 JDBC ドライバでサポートされるデータ暗号化方法
ドライバ
データベース固有
SSL
Microsoft SQL Server
 
X1

1Microsoft SQL Server 2000 以上でサポートされます。

SSL 暗号化

SSL では、クライアントとサーバの間で、この両者のみが復号化できるように暗号化されたデータを送受信します。暗号化の条件については、「SSL ハンドシェーク」と呼ばれる一連のイベントでネゴシエートします。ハンドシェークでは、以下のタイプの認証が実施されます。

SSL のコンフィグレーションの詳細については、個別のドライバの章を参照してください。

SSL サーバ認証

クライアントが接続を要求すると、サーバは認否の決定に使用するパブリック証明書をクライアントに提示します。クライアントは、この証明書の発行者を、信頼性のある認証局 (CA) のリストと照合します。このリストは、トラストストアと呼ばれるクライアント上の暗号化ファイルに保持されています。クライアントは、必要に応じて証明書のサブジェクト (オーナー) を確認できます。証明書がトラストストア内の信頼性のある CA に一致すると (そして証明書のサブジェクトがアプリケーション側の想定値に一致すると)、クライアントとサーバの間に暗号化された接続が確立されます。証明書が一致しない場合は、接続に失敗して例外が送出されます。

証明書の発行者とトラストストアの内容を照合するためには、ドライバがトラストストアを見つけ、適切なパスワードでトラストストアのロックを解除できなければなりません。トラストストアの情報は、以下のいずれかの方法で指定できます。

別の方法として、信頼性のある CA が発行した証明書でなくても、サーバから返されたすべての証明書を信頼するように Type 4 JDBC ドライバをコンフィグレーションすることもできます。テスト環境においては、サーバから送信されたすべての証明書をドライバが信頼するようにすることで、テスト環境内のクライアントごとにトラストストア情報を指定する手間を省くことができます。ドライバがサーバからのすべての証明書を信頼するようにコンフィグレーションした場合、証明書内の発行者情報は無視されます。

 


Java セキュリティ マネージャに必要なパーミッション

Java セキュリティ マネージャを有効にした状態で Type 4 JDBC ドライバを使用する場合は、ドメインのセキュリティ ポリシー ファイルに特定のパーミッションを設定する必要があります。WebLogic Server には、編集して使用することができるサンプル セキュリティ ポリシー ファイルが用意されています。このファイルは、WL_HOME\server\lib\weblogic.policy にあります。weblogic.policy ファイルには、ドライバに必要なほとんどすべてのパーミッションが含まれています。ただし、一時ファイルおよび tnsnames.ora にアクセスするパーミッションは含まれていません。weblogic.policy ファイルを変更せずに使用する場合は、それ以上のパーミッションを付与する必要はありません。別のセキュリティ ポリシー ファイルを使用する場合や、追加のパーミッションを必要とするドライバ機能を使用する場合は、これ以降の節を参照して必要となるパーミッションを追加してください。

注意 : Java 2 プラグインで実行する Web ブラウザ アプレットは常に、Java セキュリティ マネージャを有効にした状態で JVM で実行します。

接続を確立するためのパーミッション

データベース サーバへの接続を確立するには、以下の例で示すように 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 つまたは複数のパーミッションを付与します。

   //MS SQL Serverの場合 :
   grant codeBase "file:WL_HOME${/}server${/}lib${/}wlsqlserver.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";
   };

Java プロパティへのアクセス パーミッションの付与

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 のインストール先ディレクトリです。

接続を確立するためのパーミッション」で説明したように、これらのパーミッションを個別のファイルに付与することもできます。

Kerberos 認証のためのパーミッション

Kerberos 認証をサポートする Type 4 JDBC ドライバで Kerberos 認証を使用するには、Java 2 プラットフォームのセキュリティ ポリシー ファイルで、アプリケーションとドライバのコード ベースにセキュリティ パーミッションを付与する必要があります。以下に例を示します。

Type 4 JDBC ドライバで Kerberos 認証を使用する方法については、該当するドライバの章を参照してください。

Microsoft SQL Server

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";
};

各値の説明は次のとおりです。

 


Unicode サポート

Type 4 JDBC ドライバを使用して Unicode 対応および Unicode 非対応のデータベースにアクセスする JDBC によって、多言語アプリケーションを任意のオペレーティング システム上で開発できます。Java アプリケーションは、文字列データに関して内部的に UTF-16 Unicode エンコーディングを使用します。データを取得する場合、Type 4 JDBC ドライバはデータベースで使用されている文字エンコーディングを UTF-16 に自動的に変換します。同様に、データベースに対してデータの挿入や更新を行う場合、ドライバは UTF-16 エンコーディングからデータベースで使用されている文字エンコーディングに自動的に変換します。

JDBC API は、Unicode (UTF-16) または ASCII でエンコードされた文字データを取得および保存するメカニズムを提供します。また、Java の文字列オブジェクトには、UTF-16 エンコーディングと一般的な文字エンコーディングとの間で文字列データを変換するメソッドが含まれています。

 


エラー処理

Type 4 JDBC ドライバでは、SQLException を送出することで呼び出し側アプリケーションにエラーを報告します。各 SQLException には、以下の情報が含まれています。

ドライバ エラー

Type 4 JDBC ドライバによって生成されるエラーは次の形式になります。

   [BEA][Type 4 JDBC driver name]message

次に例を示します。

   [BEA][SQLServer JDBC Driver]Timeout expired.

場合によっては、アプリケーションからの最後の JDBC 呼び出しをチェックしたり、JDBC 仕様を参照して推奨されるアクションを調べたりする必要があります。

データベース エラー

データベースは次の形式でエラーを生成します。

   [BEA][Type 4 JDBC driver name][DBMS name] message

次に例を示します。

   [BEA][SQL Server JDBC Driver][SQL Server] Invalid Object Name.

ネイティブ エラー コードを使用して、考えられるエラーの原因について詳しく調査します。詳細については、データベースのドキュメントを参照してください。


  ページの先頭       前  次