Serverで使用する方法について説明します。注意:新しいアプリケーションでは、DataSourceオブジェクトを使ってデータベース接続を取得することをお薦めします。DataSourceオブジェクト(WebLogicデータ・ソースおよびマルチ・データ・ソース)をJNDIツリーと一緒に使用して、データ・ソース内のプールされた接続にアクセスしてデータベース接続を取得できます。WebLogicラッパー・ドライバは非推奨になっています。APIを使用した既存のアプリケーションまたはレガシー・アプリケーションの場合は、WebLogicラッパー・ドライバを使用してデータベース接続を取得できます。RMIドライバの使い方(非推奨)注意:RMIドライバ・クライアント機能は非推奨で、将来のリリースでは削除されます。このリリースのWLConnectionとWLDataSourceに導入された機能は、RMIドライバ・クライアントではサポートされません。JDBCのプログラミング』の該当リリースでの新規JDBCデータ・ソース機能と変更されたJDBCデータ・ソース機能に関する項を参照してください。RMIドライバ・クライアントは、DataSourceオブジェクトをルックアップすることで、DBMSへの接続を確立します。Serverを直接呼び出すことにより実行されます。Serverに接続します。JDBC/RMIドライバを使用するためにRMIの知識は必要ではありません。Serverリリースとの相互運用性は限られています。参加者(クライアントとサーバーまたはサーバーとサーバー)は、同じメジャー・リリースである必要があります。初期の10.xクライアントは、ucp.jarをCLASSPATHに追加することで、新しいポイント・リリースやパッチ・セット・リリースと相互運用するように更新できます。10.3.2.0よりも前には、RMIドライバ・クライアントではDataSourceオブジェクトへの未許可のRMIアクセスが可能であり、セキュリティの潜在的な脆弱性となっていました。クライアントのデータベースへのアクセスが管理されない場合があるためです。このような環境ではRMIドライバ・クライアントをWebLogicデータ・ソースおよびマルチ・データ・ソースと置き換えること、RMIドライバ・クライアントが使用される場合には強力なネットワーク・セキュリティ手段を実装することをお薦めします。10.3.2.0以上のドメインにおけるサーバーでは、DataSourceオブジェクトへのRMIアクセスはweblogic.jdbc.remoteEnabledシステム・プロパティによってサーバー・レベルで制御されます。デフォルトでは無効になっています。RMIドライバ・クライアントがDataSourceオブジェクトにアクセスできるようにするには、weblogic.jdbc.remoteEnabledプロパティの値をtrueに設定します。RMIドライバ・クライアントをWebLogicデータ・ソースおよびマルチ・データ・ソースと置き換えること、RMIドライバ・クライアントが使用される場合には強力なネットワーク・セキュリティ手段を実装することをお薦めします。10.3.6.0では非推奨です。SecurityパラメータをSecureに設定して、RMIドライバ・クライアントのDataSourceオブジェクトとの通信をサーバー・レベルで保護できます。有効な値は次のとおりです。リモート・クライアントおよびリモート・サーバーがRMI上で行うすべての着信JDBC呼出しが無効です。すべての着信JDBC呼出しはJTSを使用し、管理者認証があります。匿名を含め他のすべてのサブジェクトは拒否されます。このオプションでは次のいずれかが必要です。構成済SSLリスニング・ポート。参加ドメイン間の構成済クロスドメイン・セキュリティ。Server間のクロスドメイン・セキュリティの有効化に関する項を参照してください。セキュリティが構成されていない場合、すべての操作は例外が発生して失敗します。アプリケーションのサブジェクトに対して安全でないチャネルを使用ます。RMIを使用してデータ・ソースにアクセスするとき管理者認証がありません。この設定は、RMIがデータ・ソースにアクセスする従来の実装の動作を反映しています。クライアントによるデータベースへのアクセスが管理されない場合があるため、セキュリティが潜在的に脆弱になります。この設定は、強固なネットワーク・セキュリティが設置されているときにのみ使用します。Compatibilityがデフォルト値です。JDBCセキュリティの有効化に関する項を参照してください。Securityをオーバーライドし、既存のアプリケーションとの後方互換性を提供します。Serverの設定RMIドライバには、DataSourceオブジェクトを通してだけアクセスできます。DataSourceオブジェクトは、管理コンソールで作成します。Server構成にDataSourceオブジェクトを作成します。Serverデータ・ソースからデータベース接続を取得し、使用する方法を以下のサンプル・コードに示します。必要なパッケージをインポートするRMIドライバを使用して、データベース接続を取得/使用する前に、次のパッケージをインポートします。JDBC/RMIクライアントは、管理コンソールで定義されたDataSourceからDBMSへの接続を取得します。クライアントは、以下の2通りの方法でDataSourceオブジェクトを取得できます。JNDIルックアップを使用します。これが最も直接的で望ましい方法です。Driver.connect()メソッドでDataSource名をRMIドライバに渡します。Serverはクライアントに代わってJNDIルックアップを実行します。RMIドライバにアクセスするには、DataSourceオブジェクトの名前をルックアップすることで、JNDIツリーからContextオブジェクトを取得します。管理コンソールで定義された「myDataSource」というDataSourceにアクセスするには、以下のようにします。Serverが稼働するマシンの名前、portはそのマシンにおいて接続リクエストをリスニングするポートの番号です)。この例では、ハッシュ表オブジェクトを使用して、JNDIルックアップに必要なパラメータを渡しています。JNDIルックアップを実行するには他の方法もあります。JNDIのプログラミング』を参照してください。ルックアップの失敗を捕捉するためにJNDIルックアップがtry/catchブロックで包まれている点、コンテキストがfinallyブロックの中で閉じられている点に留意します。Serverにアクセスできます。この場合は、JDBC/RMIドライバによってJNDIルックアップが実行されます。ServerのURLとDataSourceオブジェクトの名前を定義するパラメータをDriver.connect()メソッドに渡します。管理コンソールで定義された「myDataSource」というDataSourceにアクセスするには、以下のようにします。Serverが稼働するマシンの名前、portはそのマシンにおいて接続リクエストをリスニングするポートの番号です)。JNDIユーザー情報を設定するために使用する以下のプロパティも定義できます。ユーザー名を指定します。weblogic.userのパスワードを指定します。ServerではDBMSから単一行を取得し、これをクライアントJVMに転送します。行キャッシングが有効になっていると、ResultSet.next()を1回呼び出すだけで複数のDBMS行が取得され、これらがクライアント・メモリーにキャッシュされます。行キャッシングを行うと、データ取得のための通信の回数が減ることでパフォーマンスが向上します。Serverが同じJVMにある場合、行キャッシングは実行されません。行キャッシングは、データ・ソース属性の「行のプリフェッチを有効化」で有効または無効にできます。ResultSet.next()の呼出しごとに取得される行の数は、データ・ソース属性の「プリフェッチする行のサイズ」で設定します。データ・ソースの属性は、管理コンソールで設定します。行キャッシングを有効にして、データ・ソースに「プリフェッチする行のサイズ」属性を設定するには、次の手順に従います:まだそうしていない場合、管理コンソールのチェンジ・センターで「ロックして編集」をクリックします。「ドメイン構造」ツリーで「サービス」>「JDBC」を展開し、「データ・ソース」を選択します。「データ・ソースの概要」ページでデータ・ソース名をクリックします。一般」タブを選択してから、次を実行します:「行のプリフェッチを有効化」チェック・ボックスを選択します。「プリフェッチする行のサイズ」に、ResultSet.next()の呼出しごとにキャッシュする行の数を入力します。「保存」をクリックします。管理コンソールのチェンジ・センターで「変更のアクティブ化」をクリックしてこれらの変更をアクティブ化します。一般」ページを参照してください。RMIドライバによる行キャッシングの重要な制限事項RMIドライバを使用して行キャッシングを実装する場合は、以下の制限事項があることに注意してください。行キャッシングは、結果セット型がTYPE_FORWARD_ONLYおよびCONCUR_READ_ONLYの両方である場合にのみ実行されます。結果セットのデータ型によっては、その結果セットのキャッシングが無効である場合があります。これには以下が含まれます。LONGVARCHAR/LONGVARBINARYNULLBLOB/CLOBARRAYREFSTRUCTJAVA_OBJECT行キャッシングが有効で、その結果セットに対してアクティブな場合、一部のResultSetメソッドはサポートされません。そのほとんどは、ストリーミング・データ、スクロール可能な結果セット、または行キャッシングがサポートされていないデータ型に関係しています。これには以下が含まれます。(Map)getRef()getBlob()/getClob()getArray()getDate()getTime()getTimestamp()グローバル・トランザクション使用時の制限事項グローバル・トランザクション内におけるRowSetの取得は、「フェッチ順序無効」例外によって失敗することがあります。例:RMI呼出しが返ると、グローバル・トランザクションはサーバー・インスタンスによって自動的に中断されます。JDBCドライバは、保留中のResultSetオブジェクトを無効化して、システム・リソースを解放します。クライアントは、無効化されたResultSetからデータを読み出そうとします。データがプリフェッチされていなかった場合、「フェッチ順序無効」例外がスローされます。プリフェッチされる行数はベンダーによって異なるため、特に1行または2行での作業を行っているのであれば、この問題が生じる場合と生じない場合があります。この例外が発生した場合は、必ずRowSetをサーバー側で取得し、その後それをクライアントにシリアライズして戻すようにします。Connectivity)ドライバです。Server内のJDBCドライバが使用されます。アプリケーションでは、データ・ソースから取得した接続へのアクセスにJTSドライバが使用されます。非XAのJDBCドライバを使用するデータ・ソースからの接続がグローバル・トランザクションに参加する際に、JTSドライバが内部的に使用されます(ロギング・ラスト・リソースおよび2フェーズ・コミットのエミュレート)。この動作により、非XAのリソースがXAをエミュレートし、2フェーズ・コミット・トランザクションに参加できるようになります。JDBCデータ・ソースの構成と管理』のJDBCデータ・ソース・トランザクション・オプションに関する項を参照してください。JTSドライバではT3プロトコルしかサポートされません。トランザクションが開始されると、同じデータ・ソースから接続を取得する実行スレッドのすべてのデータベース操作で、そのデータ・ソースからの同じ接続が共有されます。(JMS)のようなサービスを通じて、または標準JDBC呼出しを使用して直接SQLを送信することにより行うことができます。これらの操作すべては、デフォルトでは同じ接続を共有し、同じトランザクションに参加します。トランザクションがコミットまたはロールバックされると、接続はプールに返されます。(RMI)を介してトランザクションに参加することができます。あるクライアントの1つのスレッド内でトランザクションを開始し、そのクライアントにリモートRMIオブジェクトを呼び出させることができます。リモート・オブジェクトによって実行されるデータベース操作は、そのクライアント上で開始されたトランザクションの一部分になります。そのリモート・オブジェクトがそれを呼び出したクライアントに戻されたら、そのトランザクションをコミットまたはロールバックできます。リモート・オブジェクトによって実行されるデータベース操作は、すべて必ず同一のデータ・ソースを使用して、同一のトランザクションの一部になる必要があります。props);を呼び出す必要があります。トランザクションが完了する(コミットまたはロールバックされる)と、接続はデータ・ソースに返されます。props);を呼び出す必要があります。Serverにデータ・ソースを作成する必要があります。次に、サーバー側アプリケーションからJTSトランザクションを作成して使用する方法について説明します。ここでは、「myDataSource」というデータ・ソースを使用します。以下のクラスをインポートします。weblogic.jndi.*;UserTransactionクラスを使用してトランザクションを確立します。JNDIツリー上でこのクラスをルックアップできます。UserTransactionクラスは、現在の実行スレッド上のトランザクションを制御します。このクラスはトランザクション自身を表さないことに注意してください。このトランザクションの実際のコンテキストは、現在の実行スレッドに関連付けられています。ctx.lookup("javax.transaction.UserTransaction");現在のスレッドのトランザクションを開始します。connectiontx.begin();JTSドライバをロードします。Class.forName("weblogic.jdbc.jts.Driver").newInstance();データ・ソースから接続を取得します。データベース操作を実行します。これらの操作は、EJB、JMS、および標準JDBC文など、データベース接続を使用するどのサービスでも実行できます。これらの操作では、必ずJTSドライバを使用して、手順3で開始したトランザクションと同じデータ・ソースにアクセスすることによって、このトランザクションに参加するようにします。JTSドライバを使用する追加のデータベース操作で、手順5で指定したデータ・ソースと異なるデータ・ソースを使用すると、そのトランザクションをコミットまたはロールバックしようとしたときに例外が発生します。接続オブジェクトを閉じます。接続を閉じても、それでトランザクションがコミットされるわけでも、その接続がプールに戻されるわけでもないことに注意してください。conn.close();そのトランザクションをコミットまたはロールバックすることにより、トランザクションを完了します。JTSドライバは、現在のスレッドに存在するすべての接続オブジェクトのすべてのトランザクションをコミットし、接続をプールに返します。Poolドライバの使い方(非推奨)WebLogicプール・ドライバを使用すると、HTTPサーブレットまたはEJBなどのサーバー側アプリケーションからデータ・ソースを利用できます。Webアプリケーション、サーブレット、JSPの開発』のデータベースのアクセスを参照してください。reserved.法律上の注意点ライブラリ。