SQL Serverデータベース用Oracle ADF Business Componentsの開発

このトピックでは、Microsoft SQL Serverデータベースを使用するOracle ADF Business Componentsプロジェクトを作成する手順を説明します。データベース実装および従う必要のある制限事項の違いに注意してください。「外部データソースの開発における制限事項」を参照してください。

このトピックの説明は、次の手順で構成されています。

  1. 要件
  2. JDBCドライバのインストール
  3. デフォルト・プロジェクト・ライブラリの指定
  4. 新規接続の作成
  5. ビジネス・コンポーネント・プロジェクトの開始
  6. ビジネス・ロジック層のテスト
  7. クライアントのアプリケーション・モジュールの構成
  8. 行のロック
  9. OC4Jへのデプロイ

要件

ここでの手順を実行するには、次のものが必要です。

JDBCドライバのインストール

SQL Server用ビジネス・コンポーネント・プロジェクトを開発するには、Microsoft SQL Server 2000 Driver for JDBCが必要です。次のURLからドライバをダウンロードできます。

http://www.microsoft.com/sql/downloads/2000/jdbc.asp

ダウンロード後、インストール・ウィザードに従ってインストールします。環境設定には、次のデフォルトのインストール場所が、このチュートリアル全体を通して使用されます。

C:¥Program files¥Microsoft SQL Server 2000 Driver for JDBC¥lib

デフォルト・プロジェクト・ライブラリの指定

関連するライブラリをデフォルトのプロジェクト設定に追加するには、次のようにします。

  1. 「プロジェクト」メニューから、「デフォルトのプロジェクト設定」を選択します。
  2. ナビゲーション・ツリーで、「構成」の下の「Development」「ライブラリ」をクリックします。
  3. msbase.jarmsutil.jarおよびmssqlserver.jarという3つのSQL Serverライブラリを追加する必要があります。
    1. 「新規」をクリックします。
    2. 「ライブラリ名」フィールドにOther JDBCと入力します。
    3. 「クラスパス」フィールドの「編集」をクリックします。
    4. 「エントリの追加」をクリックします。
    5. C:¥Program files¥Microsoft SQL Server 2000 Driver for JDBC¥libへ移動し、フォルダを展開します。
    6. [Ctrl]キーを押しながらmsbase.jarmsutil.jarおよびmssqlserver.jarをクリックして選択します。
    7. 「選択」をクリックします。
    8. 「OK」をクリックし、各ダイアログを閉じます。

サード・パーティ接続用にIDEを設定し、適切なライブラリをデフォルトでプロジェクトに追加するよう指定しました。次は、接続を作成します。

新規接続の作成

新規のデータベース接続を作成するには、接続ウィザードを使用します。

  1. JDeveloper IDEで、「表示」メニューから「接続ナビゲータ」を選択します。
  2. 「接続ナビゲータ」ペインで「データベース」を右クリックし、「データベース接続の作成」を選択します。
    データベース接続の作成ウィザードが開きます。
  3. タイプ・ページで、「接続タイプ」「サード・パーティJDBCドライバ」を選択します。
  4. 認証ページで適切な値を入力し、「パスワードを配布」を選択します。
  5. 接続ページで「新規作成」をクリックし、新しいドライバを作成します。
    「JDBCドライバの登録」ダイアログが開きます。
  6. 「ドライバ・クラス」フィールドに「 com.microsoft.jdbc.sqlserver.SQLServerDriver」と入力します。
  7. 「OK」をクリックします。
  8. 「編集」をクリックして、前の手順で作成したSQLサーバー・ライブラリを選択します。
  9. 「URL」フィールドに適切な値を入力します。
  10. 「次へ」をクリックして、接続をテストします。エラーが発生した場合は、次の表を参照してください。
    エラー・メッセージ 考えられる原因
    "Unable to find driver" Javaクラス名のスペルの誤り
    "Error establishing socket" マシン名のスペルの誤り
    "No suitable driver can be found" URLの形式の誤り
    "Login failed" パスワードの誤り
    "Cannot open multiple cursors" SQL Server DB接続をSelectMethod=cursorに設定
    "Can't start a cloned connection while in manual transaction mode" SelectMethod=cursorのスペルの誤り

ビジネス・コンポーネント・プロジェクトの開始

Oracleデータベースを使用するビジネス・コンポーネント・プロジェクトを作成したことがある場合は、次の手順を理解しているはずです。違いは、SQLスタイルにSQL92を、型マップにJavaを選択することです。また、このプロジェクトで適切なライブラリを使用することも指定します。

  1. 新しい空のプロジェクトを作成します。
  2. システム・ナビゲータで、プロジェクト・ノードを右クリックし、「プロジェクトの設定」を選択します。
  3. ナビゲーション・ツリーで、「構成」の下の「Development」「ライブラリ」をクリックします。
  4. 使用可能なライブラリ・ペインで「その他のJDBC」を選択し、選択済のライブラリ・ペインに移動します。
  5. 「OK」をクリックし、ダイアログを閉じます。
  6. プロジェクトを右クリックし、「新規ビジネス・コンポーネント」を選択します。
  7. 接続ページで、ドロップダウン・リストから、「SQL Server」SQLスタイルおよび「Java」型マップを選択します。「次へ」をクリックします。
  8. パッケージ名を入力するかデフォルト名を受け入れ、「次へ」をクリックします。
  9. ビジネス・コンポーネント・ページに、データベース内の表のリストが表示されます。DEPTおよびEMPを選択し、「選択済」リストに移動します。
  10. 「終了」をクリックします。

ビジネス・ロジック層のテスト

ビジネス・ロジック層を即座にテストするには、Business Component Browser(Business Component Tester)を使用します。Javaプロジェクトをテストするには、JVMで実行環境を認識できるようにする必要があります。特に、JDBCドライバの検出方法(プロジェクト・ライブラリを使用)およびロードするJDBCドライバ(構成で制御されるOracle ADF Business Componentsプロパティ・フラグを使用)を指定する必要があります。

Business Component Browserでビジネス・ロジック層をテストするには、次のようにします。

  1. システム・ナビゲータで、アプリケーション・モジュール・ノードを右クリックし、ポップアップ・メニューから「構成」を選択します。
  2. Configuration Managerで、「編集」をクリックします。
  3. 「プロパティ」タブをクリックします。
  4. プロパティjbo.sql92.JdbcDriverClassへスクロールし、これを
    com.microsoft.jdbc.sqlserver.SQLServerDriver
    に変更します。
  5. 「OK」をクリックし、ダイアログを閉じます。
  6. システム・ナビゲータで、アプリケーション・モジュール・ノードを右クリックし、ポップアップ・メニューから「テスト」を選択します。
  7. アプリケーション・モジュール接続では、ドロップダウン・ボックスを使用し、編集した構成を選択します。リスト表示されているデフォルトの構成ではありません。
  8. 「OK」をクリックします。
  9. Business Component Browserのナビゲータで、ビュー・オブジェクト・メンバーを右クリックして「表示」を選択します。
  10. データをスクロールできれば、正常に構成できていることになります。

クライアントのアプリケーション・モジュールの構成

Business Component Browserを使用するとビジネス・ロジック層を簡単にテストできますが、他のタイプのクライアント・アプリケーションでは追加要件があります。クライアントがビジネス・ロジック層に接続する際、クライアントでは、アプリケーション・モジュールに対して正しいSQLスタイル、型マップおよびJDBCドライバを使用する必要があります。これらの値を設定するには、アプリケーション・モジュールの構成を編集します。

アプリケーション・モジュールの構成を編集するには、次のようにします。

  1. システム・ナビゲータで、アプリケーション・モジュール・ノードを右クリックして「構成」を選択します。
  2. Configuration Managerで、「編集」をクリックします。
  3. 「Oracle Business Componentの構成」ダイアログで、「プロパティ」タブをクリックします。
  4. 「プロパティ」列でjbo.TypeMapEntriesを検索し、値をJavaに変更します。
  5. 「プロパティ」列でjbo.sql92.JdbcDriverClassを検索し、値をcom.microsoft.jdbc.sqlserver.SQLServerDriverに変更します。
  6. 「プロパティ」列でjbo.SQLBuilderを検索し、値をSQL92に変更します。

行のロック

個々の行のロック方法、および行がロックされている場合の応答方法のコントロールに、様々なSQLベンダーが異なる構文を使用します。この設定は、行のロック試行、および行がロック済の場合の即時エラーを目的としています。

Oracle構文は次のとおりです。SELECT DNAME from DEPT WHERE DEPTNO=20 FOR UPDATE NOWAIT

SQL*Server構文は次のとおりです。SELECT DNAME from DEPT WITH (HOLDLOCK) WHERE DEPTNO=20

Locktrailer句

次のいずれかの方法でロック動作をコントロールできます。

Locktrailerの位置

Locktrailer句の位置は、メソッドのオーバーライドでのみ変更できます。メソッドはブール・フラグgetLockTrailerIsAtEnd()であり、デフォルトでtrueに設定されます。

SQLServerでは、これがfalseにオーバーライドされ、Locktrailer句がSELECT句の終わりに挿入されます。挿入されない場合、Locktrailerが文の終わりに発生します。

select ENAME from EMP WITH (HOLDLOCK) where EMID=?"(SQL Server)
select ENAME from EMP where EMPID=? FOR UPDATE(SQL92、mySQLなど)

OC4Jへのデプロイ

プロジェクトのローカルでのテストが正常に終了したら、OC4Jへデプロイできます。ただし、まずOC4Jを外部データソースとともに使用するよう構成する必要があります。

OC4Jを外部データソースとともに使用するよう構成するには、次のようにします。

  1. テキスト・エディタで、<OracleHome>/j2ee/home/config/application.xmlファイルを編集します。
  2. msbase.jarmsutil.jar、およびmssqlserever.jarを指す<library>タグを追加します。この構文は、<library path="<path>">となります。
    たとえば、デフォルトのインストレーション・パスを使用する場合、application.xmlファイルに次のタグを追加します。
        <library path="C:\Program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar">
    <library path="C:\Program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar">
    <library path="C:\Program files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar">
    注意: 前述のように、パスに円記号(¥)を使用する必要があります。

また、外部データソースを使用するOracle ADF Business Componentsプロジェクトをデプロイする際、JDeveloperにOracle接続があると、デプロイしたプロジェクトで問題が発生する場合があります。これを回避するには、次の2つの方法があります。