このトピックでは、Microsoft SQL Serverデータベースを使用するOracle ADF Business Componentsプロジェクトを作成する手順を説明します。データベース実装および従う必要のある制限事項の違いに注意してください。「外部データソースの開発における制限事項」を参照してください。
このトピックの説明は、次の手順で構成されています。
ここでの手順を実行するには、次のものが必要です。
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
関連するライブラリをデフォルトのプロジェクト設定に追加するには、次のようにします。
Other JDBC
と入力します。
C:¥Program files¥Microsoft SQL Server 2000 Driver for JDBC¥lib
へ移動し、フォルダを展開します。
サード・パーティ接続用にIDEを設定し、適切なライブラリをデフォルトでプロジェクトに追加するよう指定しました。次は、接続を作成します。
新規のデータベース接続を作成するには、接続ウィザードを使用します。
エラー・メッセージ | 考えられる原因 |
---|---|
"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を選択することです。また、このプロジェクトで適切なライブラリを使用することも指定します。
ビジネス・ロジック層を即座にテストするには、Business Component Browser(Business Component Tester)を使用します。Javaプロジェクトをテストするには、JVMで実行環境を認識できるようにする必要があります。特に、JDBCドライバの検出方法(プロジェクト・ライブラリを使用)およびロードするJDBCドライバ(構成で制御されるOracle ADF Business Componentsプロパティ・フラグを使用)を指定する必要があります。
Business Component Browserでビジネス・ロジック層をテストするには、次のようにします。
jbo.sql92.JdbcDriverClass
へスクロールし、これを
com.microsoft.jdbc.sqlserver.SQLServerDriver
に変更します。
Business Component Browserを使用するとビジネス・ロジック層を簡単にテストできますが、他のタイプのクライアント・アプリケーションでは追加要件があります。クライアントがビジネス・ロジック層に接続する際、クライアントでは、アプリケーション・モジュールに対して正しいSQLスタイル、型マップおよびJDBCドライバを使用する必要があります。これらの値を設定するには、アプリケーション・モジュールの構成を編集します。
アプリケーション・モジュールの構成を編集するには、次のようにします。
Java
に変更します。
com.microsoft.jdbc.sqlserver.SQLServerDriver
に変更します。SQL92
に変更します。
個々の行のロック方法、および行がロックされている場合の応答方法のコントロールに、様々なSQLベンダーが異なる構文を使用します。この設定は、行のロック試行、および行がロック済の場合の即時エラーを目的としています。
Oracle構文は次のとおりです。SELECT DNAME from DEPT WHERE DEPTNO=20 FOR UPDATE NOWAIT
SQL*Server構文は次のとおりです。SELECT DNAME from DEPT WITH (HOLDLOCK) WHERE DEPTNO=20
次のいずれかの方法でロック動作をコントロールできます。
jbo.sql92.locktrailer
はFOR UPDATE
にデフォルト設定されます。このプロパティは、SQL ServerのWITH (HOLDLOCK)
で必要な場合など、データベースで別の構文が必要とされる場合にオーバーライドします。
getSqlVariantLockTrailer()
をオーバーライドし、FOR UPDATE NOWAIT
を(Oracle構文を使用して)戻すことができます。
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を外部データソースとともに使用するよう構成するには、次のようにします。
<OracleHome>
/j2ee/home/config/
のapplication.xml
ファイルを編集します。
msbase.jar
、msutil.jar
、およびmssqlserever.jar
を指す<library>
タグを追加します。この構文は、<library path="<path>">
となります。 <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つの方法があります。
data-sources.xml
ファイルを編集し、データソース用<data-source>要素を手動で追加します。構文は次のとおりです。<data-source
class="com.evermind.sql.DriverManagerDataSource"
name="SQLServerDS"
location="jdbc/SQLServerCoreDS"
xa-location="jdbc/xa/SQLServerXADS"
ejb-location="jdbc/SQLServerDS"
connection-driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
username="scott"
password="tiger"
url=jdbc:microsoft:sqlserver://<db-host>:1433;SelectMethod=cursor
User=<username>;Password=<password>
inactivity-timeout="30
Copyright © 1997, 2007, Oracle. All rights reserved.