|
この章は、WebLogic Workshop で Data Service コントロールを使用し、Data Services Platform 用にクライアント アプリケーションを開発する方法について解説します。 以下の項目が含まれます。
Data Service コントロールにより、WebLogic Workshop アプリケーションを使用してデータ サービスに簡単にアクセスできます。 Data Service コントロールを使用してデータ サービス関数を呼び出すと、データ オブジェクトとして情報を取得します。 データ オブジェクトは、Service Data Object (SDO) の仕様により定義される情報の単位です。 SDO についての詳細は、「データ プログラム モデルおよび更新のフレームワーク」を参照してください。
Data Service コントロールは、この章で解説する機能に加え、SDO Mediator API を通じて利用可能な機能と同一の機能も多数備えています。次のような機能があります。
これらの機能の詳細については、「高度なトピック」を参照してください。
Data Service コントロールは、ウィザードにより生成される Java ファイルで、WebLogic Workshop アプリケーションにデータ サービス関数およびプロシージャを追加する場合に使用できます。 Data Service コントロールは、ウィザードにより生成される Java ファイルであり、WebLogic Workshop アプリケーションにデータ サービス関数およびプロシージャを追加する場合に使用できます。 Data Service コントロール ウィザードは、ユーザが指定するサーバの利用可能なデータ サービス関数およびプロシージャを検索します。 その後、ユーザのコントロールに含めるものを選択できます。
リモート サーバのデータ サービスにアクセスする場合は、最初に、サービス関数が戻す情報が記載されたメタデータ (XML スキーマ ファイル形式) が、リモート サーバから現行のアプリケーションにダウンロードされます。 これらのスキーマ ファイルは、リモート アプリケーションに基づいて名づけられたスキーマ プロジェクトに置かれます。 プロジェクト内のディレクトリ構造は、リモート サーバのディレクトリ構造を反映します。 AquaLogic Data Services Platform は、クエリおよび Data Service コントロール (.jcx
) ファイルに関連するターゲット スキーマ用のインタフェース ファイルを生成します。
AquaLogic Data Services Platform 2.5 のリリースでは、Data Service コントロールは WebLogic Workshop 8.x および Workshop for WebLogic Platform 9.2 の両方で利用できます。Workshop for WebLogic Platform 9.2 Data Service コントロールにより、WebLogic Server 8.1 環境からデータ サービスにアクセスできます。 Data Service コントロール 9.2 のインストールおよび使用の詳細については、「Data Service コントロール 9.2 の使用」を参照してください。
注意 : | Data Service コントロールなどのクライアント API のすべては、省略可能なパラメータのない呼び出しデータ サービス関数をサポートします。 省略可能なパラメータのないデータ サービス関数は、他のデータ サービス関数内またはアドホック クエリから呼び出すことができますが、その関数を Data Service コントロール自体を通じて呼び出すことはできません。 |
Data Service コントロールは、Java コントロールのように、Web サービス、ページ フローおよび WebLogic Integration ビジネス プロセスなどのアプリケーションに使用できます。 クライアント アプリケーションにコントロールを適用した後は、クエリ関数から戻されたデータをユーザのアプリケーションのコントロールで使用できます。
この章では、ページ フロー ベースの Web アプリケーションで Data Service コントロールを使用する方法について説明します。 使用の手順は、Portal および他の WebLogic Workshop プロジェクトでも同様です。
Data Service コントロールを作成すると、WebLogic Workshop により Java コントロール拡張 (.jcx
) ファイルが生成されます。このファイルにはデータ サービス関数に基づくメソッドと、任意の XQuery 文 (アドホック クエリ) をサーバに渡すために非コメント化して使用できるコメント化されたメソッドが入っています。
Data Service コントロールの [デザイン ビュー] タブは、コントロールに入れるために選択されたデータ サービス メソッドのグラフィカル ビューを表示します。
右クリック メニューを使用すると、コントロール メソッドを追加または編集できます (メソッドに関連するデータ サービス関数またはプロシージャを変更するなど)。 右クリック メニューを使用すると、(メソッドに関連するデータ サービス関数またはプロシージャを変更するなどによって) コントロール メソッドを追加または編集できます。
[ソース ビュー] タブは、Data Service コントロールのソース コードを表示します。 各メソッドに関連するデータ サービス関数名を定義するアノテーションが入っています。 更新関数では、更新にバインドされているデータ サービスは、ロケータ属性により指定されるデータ サービスです。 例 :
locator="c:/DSP/DataServices/RTLServices/ApplOrderDetailView.ds"
このメソッドの署名は、戻り値の型を示します。 読み込みメソッド用の戻り値の型は、参照された関数が入っているデータ サービスのスキーマ型に対応する SDO オブジェクトです。 Data Service コントロールに使用されるデータ サービス対応の SDO クラスは、プロジェクトのライブラリ フォルダにあります。 インタフェースは、各データ サービス用に生成されます。 また、フォルダには、JCX ファイルの関数に関連するスキーマ ファイルのコピーも入っています。
Java コントロール拡張インスタンスは、生成されたファイルです。 「アドホック クエリ用のデータ サービス コントロールの使用」に示すように、メソッドを追加してアドホック クエリを実行する場合に限り、ソース コードを編集する必要があります。
生成されたData Service コントロール (.jcx
) ファイル部分をリスト 7-1 に示します。 クエリとともに使用されるデータ サービス URI、パッケージ宣言および import 文を表示します。
package Controls;
import weblogic.jws.control.*;
import com.bea.ld.control.LDControl;
import com.bea.ld.filter.FilterXQuery;
import com.bea.ld.QueryAttributes;
/**
* @jc:LiquidData application="RTLApp" urlKey="RTLApp.RTLSelfService.Controls.RTLControl"
*/
public interface RTLControl extends LDControl, com.bea.control.ControlExtension
{
/* ストアド クエリに対応する一般的なメソッド
*/
/**
*
* @jc:XDS locator="ld:DataServices/RTLServices/ApplOrderDetailView.ds" functionName="submitApplOrderDetailView"
*/
java.util.Properties[] submitApplOrderDetailView(retailer.ORDERDETAILDocument rootDataObject) throws Exception;
/**
*
* @jc:XDS locator="ld:DataServices/RTLServices/ProfileView.ds" functionName="submitArrayOfProfileView"
*/
java.util.Properties[] submitArrayOfProfileView(retailer.PROFILEDocument[] rootDataObject) throws Exception;
/**
*
* @jc:XDS locator="ld:DataServices/RTLServices/ElecOrderDetailView.ds" functionName="submitElecOrderDetailView"
*/
java.util.Properties[] submitElecOrderDetailView(retailer.ORDERDETAILDocument rootDataObject) throws Exception;
/**
*
* @jc:XDS functionURI="ld:DataServices/CustomerDB/CUSTOMER" functionName="CUSTOMER" schemaURI="ld:DataServices/CustomerDB/CUSTOMER" schemaRootElement="CUSTOMER"
*/
dataServices.customerDB.customer.CUSTOMERDocument[] CUSTOMER();
/**
< コードの一部を削除 >
*/
/**
*
* @jc:XDS functionURI="ld:DataServices/RTLServices/ProfileView" functionName="getProfileView" schemaURI="urn:retailer" schemaRootElement="PROFILE"
*/
retailer.PROFILEDocument[] getProfileViewWithFilter(java.lang.String p0, FilterXQuery filter);
/**
* アドホック クエリを実行するためのデフォルトのメソッド
* このメソッドは、異なるメソッド名 (たとえば runMyQuery) に変更したり、SDO によって生成されたクラスを戻したり (たとえば Customer)、
* DataObject クラスを戻したり、以下のような 1 つまたは 2 つの追加のパラメータを取るようにカスタマイズすることができます。
* com.bea.ld.ExternalVariables と com.bea.ld.QueryAttributes
* 例 commonj.sdo.DataObject executeQuery(String xquery, ExternalVariables params);
* 例 commonj.sdo.DataObject executeQuery(String xquery, QueryAttributes attrs);
* 例 commonj.sdo.DataObject executeQuery(String xquery, ExternalVariables params, QueryAttributes attrs);
*/
com.bea.xml.XmlObject executeQuery(String query);
void newMethod1();
}
クライアント アプリケーションは、データ サービス関数に対してアドホック クエリを出すことができます。 データ サービス関数のデータの戻し方を変更する必要がある場合、アドホック クエリを使用できます。 アドホック クエリは、WebLogic Server にデプロイされたデータ サービスにより戻されたデータを処理するために最も頻繁に使用されます。 アドホック クエリは、既存のデータ サービスに関数を追加することが不都合または不可能な場合に特に便利です。
ウィザードから生成された Data Service コントロールには、アドホック クエリ作成の開始点になるコメント化されたアドホック クエリ メソッドがあります。 アドホック クエリを作成するには、以下の手順に従ってください。
com.bea.xml.XmlObject executeQuery(String query);
(この関数名を、ユーザのアプリケーション用に置き換えます。 デフォルトでは、アドホック クエリにより XMLObject が返されますが、アドホック クエリ用の XML の戻り値の型に一致する型付の SDO または型付きの XMLBean クラスを戻すことができます。 オプションとして、ExternalVariable または QueryAttribute (または両方) をアドホック クエリに与えることもできます。)
アドホック クエリ関数を Data Service コントロールから呼び出す場合、呼び出し元によりクエリの文字列 (必要に応じて、さらにオプションの ExternalVariables のバインディングおよび QueryAttributes) が渡される必要があります。 たとえば、Data Service コントロールのアドホック クエリの署名は以下のように表示されます。
public interface MyLDControl extends LDControl,
com.bea.control.ControlExtension
{
ldcProduucerDataServices.address.ArrayOfADDRESSDocument
adHocAddressQuery(String xquery);
}
この Data Service コントロールを呼び出すコード (たとえば、WebService JWS ファイルから) は、以下のように表示されます。
/** @common:control */
public ldcontrol.MyLDControl myldcontrol;
/** @common:operation */
public ldcProduucerDataServices.address.ArrayOfADDRESSDocument
adHocAddressQuery()
{
String adhocQuery =
"declare namespace f1 = \"ld:ldc_produucerDataServices/ADDRESS\";\n" +
"declare namespace ns0=\"ld:ldc_produucerDataServices/ADDRESS\";\n"+
"<ns0:ArrayOfADDRESS>\n"+"{for $i in f1:ADDRESS()\n" +
"where $i/STATE = \"TX\"\n"+" return $i}\n" +
"</ns0:ArrayOfADDRESS>\n";
return myldcontrol.adHocAddressQuery(adhocQuery);
}
この節では、Data Service コントロールの作成およびその Web プロジェクトへの使用に関する手順を説明します。 Data Service コントロールを作成する一般的な手順を以下に示します。
WebLogic Workshop で Data Service コントロールを作成する前に、アプリケーション内で別のアプリケーションおよびプロジェクトを作成する必要があります。 WebLogic Workshop プロジェクトのほとんどの型に Data Service コントロールを作成できます。一般的には、以下に作成します。
AquaLogic Data Services Platform 対応のアプリケーションをホストする WebLogic Server が実行されていることを確認します。 WebLogic Server は、ローカル (WebLogic Workshop と同一のドメイン) またはリモート (WebLogic Workshop とは別のドメイン) で実行できます。
フォルダを選択してから右クリックし、Data Service コントロール用にプロジェクトでフォルダを作成して名前をつけます。 他のコントロール (データベース コントロールなど) を同一のフォルダに必要に応じて作成することもできます。 (WebLogic Workshop コントロールをプロジェクトのディレクトリ構造のトップ レベルに作成することはできません。 コントロールをフォルダに作成する必要があります。)
Data Service コントロールを作成するには、ユーザのプロジェクトの新規フォルダを右クリックして [新規作成] [Java コントロール] を図 7-2 に示すように選択し、Java コントロール ウィザードを起動します。 ([ファイル] [新規作成] [Java コントロール] メニュー項目を使用してコントロールを作成することもできます。)
[新しい Java コントロール] ダイアログから Data Services Platform を図 7-3 に示すように選択します。 コントロール (.jcx
) ファイル用にファイル名を入力し、[次へ] をクリックします。
[新しい Java コントロール - AquaLogic Data Services Platform] ダイアログ (図 7-4) により、Data Services Platform アプリケーションまたはプロジェクトをホストする WebLogic Server 用の接続情報を入力できます。 サーバがローカルの場合は、Data Service コントロールにより、アプリケーション プロパティに保存された接続情報を使用します。 (これらの設定を表示するには、WebLogic Workshop の [ツール] [アプリケーション プロパティ] メニュー項目にアクセスします。)
サーバがリモートの場合は、[リモート] オプションを選択し、適切なサーバ URL、ユーザ名、およびパスワードを入力します。
注意 : | 別のユーザ名およびパスワードを指定し、Data Service コントロール ウィザードのローカル マシンに接続することもできます。 この作業を行うには、[リモート] ボタンをクリックし、ローカル マシン用の接続情報 (別のユーザ名およびパスワード) を入力します。 [アプリケーション プロパティ] または [Data Service コントロール] ウィザードを通じて指定したセキュリティ資格は、JCX ファイルの作成のみに使用され、コントロールを通じたクエリのテストには使用されません。 詳細については、「Data Service コントロール使用時のセキュリティについての考慮事項」を参照してください。 |
情報が正しい場合は、[作成] をクリックして次の手順に進みます。
[データ サービス関数の選択] ページで、ユーザのアプリケーションで使用するデータサービス関数を左のペインから選択し、[追加] をクリックします(図 7-5)。 その後、[終了] をクリックします。 選択された各関数用の呼び出しが入った Data Service コントロール JCX ファイルが作成されます。
ファイルの各メソッドは、適切な (対応する) データ サービス スキーマに対応する SDO 型として返されます。 SDO クラスは、WebLogic Workshop アプリケーションのライブラリ ディレクトリに保存されます。
LiquidDataControl.jar
ファイルがない場合、このファイルは、ユーザの Data Service コントロールを作成するときにユーザのアプリケーションのライブラリ ディレクトリにコピーされます。
注意 : | Data Service コントロールを作成する際にタイムアウト エラーが発生すると、特定のスキーマ要素に対する XMLBean クラスをコンパイラが検索できないことを示すメッセージが表示されることがあります。 |
注意 : | タイムアウト値は、デフォルトでは 5000 (5 秒) に設定されていますが、WebLogic Workshop コンフィグレーション ファイルのディレクティブを追加して変更することができます。 |
注意 : | <beahome>/weblogic81/workshop/workshop.cfg |
注意 : | たとえば、設定を 10000 に変更するには、以下のディレクティブをファイルに追加します。 |
-Dcom.bea.ld.control.notification.timeout=10000
この節では、既存の Data Service コントロールを変更する方法について説明します。 コントロールを編集する場合、コントロールに利用できる SDO クラスが再コンパイルされるため、この時点のデータ サービスへの変更もすべてコントロールに組み込まれます。
Data Service コントロールでデータ サービス関数を変更するには、以下の手順を実行します。
.jcx
) ファイル用のデザイン ビューを開きます。
変更を保存する場合は、コントロールに基づく SDO クラスが自動的に再コンパイルされます。
既存の Data Service コントロールに新しいメソッドを追加するには、以下の手順を行います。
Data Service コントロールの任意のメソッドに対応するスキーマが変更された場合、AquaLogic Data Services Platform データ サービス フォルダの内容をいったん削除して再構築し、SDO クラスを再生成する必要があります。 任意の関数について戻り値の型が変更された場合は、その関数も Data Service コントロールで変更する必要があります。
注意 : | 静的なクライアント API (mediator API またはコントロール) を使用するクライアント アプリケーションを開発した場合および任意のスキーマを変更する場合は、再生成されたクラスを使用してそのアプリケーションを再コンパイルおよびリデプロイする必要があります。 |
コントロールを編集する場合は、その SDO クラスが自動的に再生成されます。
注意 : | 静的および動的な SDO の取り扱いの詳細については、「静的および動的 SDO API」を参照してください。 |
以下はよくあるシナリオです。キャッシュされたデータは、頻繁には変更されないためほとんどの場合に使用できますが、場合によっては、アプリケーションによりデータ ソースから直接データをフェッチすることが必要な場合があります。 同時に、キャッシュを最新の情報に更新する必要も生じます。 典型的な例は、キャッシュを各週または各月の初めに更新することです。
この作業は、ユーザの関数呼び出しを使用して、GET_CURRENT_DATA 属性を渡すことにより、実行できます。
キャッシュされたクエリ関数の結果のデータをバイパスする場合、そのキャッシュからではなく直接にデータ ソースから結果を検索するため、ユーザのアプリケーションでは Liquid Data に合図する必要があります。 これを実現するには、以下の手順を行います。
ユーザが任意のキャッシュされたデータのバイパスを要求したかどうかをテストする Java Page Flow (JPF) コードの例をリスト 7-2 に示します。 refreshCache が [False] に設定された場合は、キャッシュされたデータ (利用可能な場合) が使用されます。 それ以外の場合は、GET_CURRENT_DATA 属性とともに関数が呼び出され、データがデータ ソースから取得されます。 副生成物として、任意のキャッシュも自動的に更新されます。
if (refreshCache == false) {
customerDocument = LDControl.getCustomerProfile(CustomerID);
} else {
QueryAttributes attr = new QueryAttributes();
attr.enableFeature(QueryAttributes.GET_CURRENT_DATA);
customerDocument =
LDControl.getCustomerProfileWithAttr(CustomerID, attr);
}
前述のように、ユーザの Liquid Data コントロール JCX ファイル別の関数には追加の関数が必要です。 リスト 7-2 に示すコードについては、以下の定義をユーザの Liquid Data コントロールに追加します。
/**
* @jc:XDS functionURI="ld:DataServices/CustomerProfile" functionName="getCustomerProfile"
*/
CUSTOMERPROFILEDocument getCustomerProfileWithAttr (java.lang.String p0, QueryAttributes attr);
この節では、Data Service コントロールを使用するアプリケーションに関するセキュリティの考慮事項を説明します。 以下の項目が含まれます。
WebLogic Workshop アプリケーション プロパティ ([ツール] [アプリケーション プロパティ]) により接続情報を設定し、実行しているドメインに接続できます。 ドメイン boot.properties
ファイルに指定された接続情報を使用するか、あるいは指定したユーザ名およびパスワードでオーバーライドできます。
Data Services Platform コントロール JCX ファイルを作成してローカルの Data Services Platform サーバ (WebLogic Workshop と同一のドメインの Data Services Platform) へ接続する場合、[アプリケーション プロパティ] で指定されたユーザを Data Services Platform サーバへ接続するために使用します。 Data Service コントロールを作成してリモートの Data Services Platform サーバに接続する場合 (WebLogic Workshop とは別のドメインの WebLogic Server)、ユーザは、[Data Service コントロール ウィザード接続情報] ダイアログを指定します (図 7-4 を参照)。
Data Service コントロールを作成する場合、指定されたユーザがアクセス特権を有するすべてのクエリがコントロール ウィザードにより表示されます。 アクセス特権は、直接または間接にクエリに設定されたセキュリティ ポリシーにより定義されます。
注意 : | [アプリケーション プロパティ] または [Data Service コントロール] ウィザードを通じて指定されたセキュリティ資格は、Data Service コントロール JCX ファイルの作成のみに使用され、コントロールを通じたクエリのテストには使用されません。 コントロールを使用してクエリをテストするには、アプリケーションを通じて (ログイン ページからなど) または Web サービス ファイルの run-as プロパティを使用してユーザの資格を取得する必要があります。 |
run-as プロパティを使用して指定ユーザとして実行中のコントロールをテストできます。 Web サービス で run-as プロパティを設定するには、Web サービスを開き、WebLogic Workshop プロパティ エディタで run-as プロパティ 用にユーザを入力します。
クエリをアプリケーションから実行する場合は、そのアプリケーションにセキュリティ資格取得用のメカニズムが必要です。 資格は、ログイン画面から取得でき、アプリケーションにハード コード化するか、または J2EE コンポーネントに埋め込むことができます (run-as プロパティを JWS Web サービス ファイルで使用するなど)。
AquaLogic Data Services Platform プロジェクトをホストする WebLogic Server が WebLogic Workshop とは別のドメインにある場合は、両方のドメインを信頼するドメインとして設定する必要があります。
ドメインは、同一のセキュリティ資格を共有する場合は、信頼するドメインと見なされます。 信頼するドメインでは、一方のドメインで既知のユーザが他方のドメインでも既知であれば、後者のドメインで認証される必要はありません。
注意 : | 信頼するドメインとして設定した後は、その信頼する設定を有効にする前に、そのドメインを再起動する必要があります。 |
信頼するユーザとしてドメインを設定するには、以下の手順に従ってください。
WebLogic セキュリティの詳細については、以下を参照してください。
セキュリティに関する情報については、以下を参照してください。
[WebLogic NetUI] タグ ライブラリにより、Data Services Platform により返されたデータを表示する JSP ベースのアプリケーションを迅速にアセンブリできます。 以下の節では、NetUI を使用して Data Service コントロールからの結果を表示する基本的な手順を示します。
WebLogic Workshop を使用してページ フローを生成する場合、WebLogic Workshop では、ページ フロー、スタート ページ (index.jsp
)、JSP ファイルおよび [ページ フロー] ウィザードで指定する各メソッド用のアクションを作成します。
Data Services Platform コントロールからページ フローを作成するには、以下の手順を実行します。
WebLogic Workshop は、Java ページ フロー (JPF ファイル)、スタート ページ (index.jsp
) および JSP ファイルを [ページ フロー] ウィザードで指定する各メソッド用に作成します。
Data Service コントロールを既存のページ フロー JPF ファイルに追加できます。 この手順は、「Web サービス クライアント向け AquaLogic Data Services アプリケーションの有効化」の「Data Service コントロールを Web サービスに追加する」 に示すように、Data Service コントロールを Web サービスに追加する手順と同様です。 ただし、その章に記載されているように、デザイン ビューで Web サービスを開く代わりに、アクション ビューでのページ フロー JPF ファイルを開きます。
図 7-11 に示すように、ページ フローのデータ パレット (ページ フローのフロー ビュー およびアクション ビューにおいて利用可能) から、既存のページ フローにコントロールを追加することもできます。
NetUI 機能を使用してデータを JSP にドラッグ アンド ドロップするには、最初に、ページ フロー JPF ファイルで変数を 1 つまたは複数作成する必要があります。 変数は、クエリに関連するスキーマ対応のデータ オブジェクト型であることが必要です。
注意 : | データ オブジェクは、SDO アーキテクチャの基本的なコンポーネントです。 詳細については、「データ プログラミング モデルと更新フレームワーク」を参照してください。 |
SDO 関数の戻り値の型のトップ レベルのクラスのページ フロー JPF ファイルにおける変数を定義すると、NetUI リピータ ウィザード通じてクエリからのデータすべてにアクセスできます。 トップ レベルのクラスはデータ サービス型のグローバル要素に対応し、その名前には CUSTOMERDocument
のように「Document」が付いています。
Data Service コントロールを作成して SDO 変数が生成されると、繰り返し可能な配列が各要素用にスキーマで作成されます。 クラスにおいて他の配列に対応する他の変数を追加し、JSP へのデータのドラッグおよびドロップを行いやすくすることができますが、これは必須ではありません。 たとえば、CUSTOMER オブジェクトの配列に ORDER オブジェクトの配列を入れることができる場合、CUSTOMER 配列および ORDER 配列のそれぞれに変数を定義できます。 その後、別の JSP ページに変数をドラッグすることができます。
SDO オブジェクトに対応する型で各変数を定義します。 ページ フロー コントローラ クラス のソース ビューで変数を定義します。 変数は、宣言されたパブリックなものであることが必要です。 以下の太字の変数宣言は、ユーザ変数宣言の 1 例です。
public class CustomerPFController extends PageFlowController
{
/**
* このコントロールはこの pageflow を生成するために使用
* @common:control
*/
private DanubeCtrl myControl;
public CUSTOMERDocument var;
public POITEM currentItem;
public PAYMENTListDocument payments;
変数は、ページ フロー コントローラにおいて定義された後 [データ パレット] タブに表示されます。 そこから、JSP ファイルに変数をドラッグ アンド ドロップできます。 JSP ファイルに配列をドラッグ アンド ドロップする場合、[NetUI Repeater] ウィザードが表示され、表示するデータの選択手順を示します。 (図 7-12 を参照)
変数をデータで実装する場合、クエリを呼び出すページ フロー アクションに対応するページ フロー メソッドにおいて変数を初期化します。 詳細は、「ページ フローの変数の初期化」を参照してください。
org.openuri.temp.schemas.customer.CUSTOMERDocument getCustomer(int p1);
public org.openuri.temp.schemas.customer.CUSTOMERDocument var;
Data Service コントロールの関数を呼び出して変数を初期化することができます。これにより、変数が戻り値のデータに設定されます。 変数の初期化により、変数へのデータ バインディングが正確に作動し、JSP が結果を最初に表示する際にタグの例外が発生しません。
ページ フローの変数を初期化するには、以下の手順に従ってください。
ページ フローのオブジェクトを初期化する方法の例を以下に示します。 太字のコード (およびコメント) は、追加したものです。 Data Service コントロールからページ フローが作成されたときに、コードの残りが生成されています (「コントロールからのページ フローの生成」を参照)。
public class CustomerPFController extends PageFlowController
{
/**
* このコントロールはこの pageflow を生成するために使用
* @common:control
*/
private DanubeCtrl myControl;
public CUSTOMERDocument var;
...
/**
* コントロール メソッドをカプセル化するアクション :getCustomer
* @jpf:action
* @jpf:forward name="success" path="viewCustomer.jsp"
* @jpf:catch method="exceptionHandler" type="Exception"
*/
public Forward getCustomer(GetCustomerForm aForm)
throws Exception
{
var = myControl.getCustomer(aForm.p1);
...
return new Forward("success");
}
}
データ オブジェクトをパブリック変数としてページ フローで作成および初期化した後、オブジェクトの要素をデータ パレットからユーザのアプリケーション ページ (JSP など) にドラッグおよびドロップできます。
以下のように、ドットで区切られたチェーン フォーマットが表示されます。
pageFlow.var.CUSTOMER.CUSTOMERNAME
要素値を実際に返す関数は、getCUSTOMERNAME()
であり、これは顧客名の java.lang.String
を戻します。
ソース ビューにおいてコードを編集すると、入力する際に WebLogic Workshop によりメソッドおよびメンバー名の完全なコードが与えられます。 図 7-13 に示すように、使用できる要素の選択ボックスがデータ オブジェクト変数に表示されます。
注意 : | AquaLogic Data Services Platform データ オブジェクトを使用するプログラミングの詳細は、「データ プログラミング モデルおよび更新のフレームワーク」を参照してください。 |
AquaLogic Data Services Platform により、XML スキーマ定義において非バインドの最大カーディナリティを有するように指定された任意のデータ要素に配列がマッピングされます。 非バインドのカーディナリティにより、要素の発生が 0 から多数 (無限) になる場合があります (DSP コンソールの戻り値の型ビューのアスタリスクにより指示されます)。
JSP ファイルへ配列値をドラッグおよびドロップする場合、BEA WebLogic Workshop により [リピータ] ウィザードが表示され、表示するデータの選択プロセスが案内されます。 [リピータ] ウィザードにより HTML テーブルまたはリストの結果を表示する選択肢が与えられます。
NetUI リピータ タグ (Data Services Platform クエリからのデータ表示に使用) を JSP ファイルに追加するには、以下の手順に従ってください。
他のリピータ タグ内にリピータ タグを作成できます。 同一のページ (ネスト化されたテーブルなど) にネスト化されたリピータを表示できます。または、ページ フロー アクションを設定し、ネスト化されたレベルを他のページに表示することもできます (リンク付きなど)。
ネスト化されたリピータ タグを作成するには、以下の手順に従ってください。
一般的な JSP デザイン パターンでは、NULL チェック処理を行うために条件コードを 追加します。 関数呼び出しにより返された NULL 値のチェックを行わない場合は、ユーザのページの関数が実行される前にそのページがレンダリングされた場合、そのページはタグ エラーを表示します。
NULL 値を処理するコードを追加するには、以下の手順に従ってください。
<netui-data:repeater dataSource="{pageFlow.promo}" defaultText="no data">
netui-data:repeater タグの dataSource 属性がページ フローからの変数の子にアクセスされている場合、JSP ファイルの if または else ロジックを以下のように追加する必要があります。
<%
PageFlowController pageFlow = PageFlowUtils.getCurrentPageFlow(request);
if ( ((pF2Controller)pageFlow).profile == null
|| ((pF2Controller)pageFlow).profile.getPROFILEVIEW().getCUSTOMERPROFILEArray() == null
|| ((pF2Controller)pageFlow).profile.getPROFILEVIEW().getCUSTOMERPROFILEArray().length == 0){
%>
<p>No data</p>
<% } else {%>
<netui-data:repeater dataSource=
"{pageFlow.profile.PROFILEVIEW.CUSTOMERPROFILEArray}">
<netui-data:repeaterHeader>
<table cellpadding="2" border="1" class="tablebody" >
<tr>
<!- 残りのテーブルと BetUI コードがここに入る -->
<td><netui:label value
="{container.item.PROFILE.DEFAULTSHIPMETHOD}"></netui:label></td>
</tr>
</netui-data:repeaterItem>
<netui-data:repeaterFooter></table></netui-data:repeaterFooter>
</netui-data:repeater>
<% }%>
Data Service コントロール 9.2 は、BEA Workshop for WebLogic Platform 9.2 を通じてアクセスできるカスタム Java コントロールです。これにより、Java Web サービス (JWS) などの Workshop for WebLogic Platform 9.2 アプリケーションの他のコンポーネントから WebLogic Server 8.1 にデプロイされたデータ サービスに簡単にアクセスできます。
AquaLogic Data Services Platform 2.5 リリースでは、コントロールは、9.2 ベースの Workshop for WebLogic Platform クライアントおよび 8.x AquaLogic Data Services Platform サーバの間のブリッジになります。
注意 : | 9.2 リリースでは、WebLogic Workshop の名は Workshop for WebLogic Platform に変更されました。 この節では、Workshop for WebLogic Platform は 9.2 環境のことです。 |
Data Service コントロールは、オープン ソースの beehive コントロール アーキテクチャ ベースです。 Beehive コントロールは、Apache Software Foundation プロジェクトです。これにより、ビジネス機能のデザイン用にプログラミング モデルが与えられ、JDK 1.5 アノテーションを通じて軽量の JavaBeans および宣言的なコンフィグレーションを簡単に使用できます。 beehive コントロールの詳細は、以下を参照してください。
図 7-16では、beehive コントロール アーキテクチャ ベースの Data Service コントロール 9.2 アーキテクチャを示します。 9.2 の Data Service コントロールの実装ファイルは、beehive ランタイム環境を使用し、WebLogic Server 8.1 とのインタフェースを行います。
Data Service コントロール 9.2 は、コア コントロール インフラストラクチャ クラスおよびウィザード クラスから構成され、Data Service コントロールを作成するために使用されます。 この節は、Data Service コントロール 9.2 の機能を解説し、それを使用して WebLogic Server 8.1 にデプロイされたデータ サービスにアクセスする手順を示します。 内容は以下のとおりです。
Data Service コントロール は、Workshop for WebLogic Platform に作成され、AquaLogic Data Services Platform 8.1 環境とともに利用できるコントロールと同様です。 ただし、以下のような機能上の相違点があります。
.java
拡張が使用され、8.1 コントロールには .jcx
拡張が付いている。
リスト 7-3 および リスト 7-4 では、9.2 環境においてそれぞれ全般およびアドホック クエリで使用されるサンプル メソッド署名を示します。
@DSPControlMethodAnnotation(functionURI = "ld:DataServices/Demo/Java/Physical/ShipSource1", functionName ="getShipSource1", schemaURI = "http://customJava/ShipSource1", schemaRootElement = "ShipSource1", locator = "ld:DataServices/Demo/Java/Physical/ShipSource1.ds", hasSideEffect = false)
public customJava.shipSource1.ShipSource1Document getShipSource1() ;
@DSPControlAdhocQueryAnnotation(body=<Your Xquery>)
java.lang.Object[] executeQuery(String xquery, ExternalVariables params, RequestConfig config);
Data Service コントロール 9.2 は、Workshop for WebLogic Platform 9.2 のプラグ インとして利用できます。 コントロールは、com.bea.dsp.control.wizard.zip
ファイルにパッケージ化されており、以下の場所で解凍する必要があります。
<BEA_HOME>/workshop92/workshop4WP/eclipse/plugins/
ファイルの解凍後、com.bea.dsp.control.wizard_1.0.0
ディレクトリが以下の場所に作成されます。
<BEA_HOME>/workshop92/workshop4WP/eclipse/plugins/
Data Service コントロール 9.2 の使用では、8.1 および 9.2 WebLogic Servers の双方を実行する必要があります。 WebLogic Server 8.1 のクラスパスをコンフィグレーションし、以下のように wls90interop.jar
を入れる必要もあります。
注意 : | WebLogic Server 8.1 は、AquaLogic Data Services Platform アプリケーションがデプロイされているサーバです。 |
コントロールのプラグ インをインストールした後、Workshop for WebLogic Platform にコントロールを作成し、それを AquaLogic Data Services Platform からのデータにアクセスするために使用することができます。 この節では、コントロールを作成、編集、使用、削除およびアンインストールする方法を示します。 内容は以下のとおりです。
コントロール プラグ インは、9.2 環境へのインストール後、Workshop for WebLogic Platform 9.2 環境を通じてアクセスできます。
Data Service コントロールを使用するには、以下の操作を行います。
この節は、Web サービス プロジェクトを作成し、JWS を通じてコントロールを使用するために必要な手順を詳説します。
Web サービス プロジェクトは、Data Service コントロールの使用のためにインストールされた以下のファセットが必要です。
これらのファセットがWeb サービス プロジェクトにインストールされない場合は、図 7-17 に示すようにエラー メッセージが表示されます。
Web サービス プロジェクトを作成するには、以下の手順に従ってください。
注意 : | 同一のフォルダ名がある場合は、別の名前を付けるよう指示されます。 |
図 7-23 に示すように、新しい Web サービス プロジェクト (DSPCtrl_Test
) および EAR (DSPCtrl_EAR
) が Workshop for WebLogic Platform 9.2 に作成されます。 EAR は、AquaLogic Data Services Platform 8.1 の環境と同一です。
Workshop for WebLogic Platform に Data Service コントロールを作成するには、以下を行ってください。
com.bea.dspctrltest
パッケージを右クリックし、[次へ] [その他] [コントロール] を選択します。t3://<ALDSPServerName>:<PortNum>
<ALDSPServerName>
は、WebLogic Server 8.1 のことで、AquaLogic Data Services Platform アプリケーションがデプロイされています。
<PortNum>
は、WebLogic Server 8.1 のポート番号です。
Data Service コントロール 9.2 の作成後、複数の操作が自動的に行われます。
DSP_Control.jar
ファイルは、Webcontent/WEB_INF/lib
ディレクトリにコピーされる。sdo.xsdconfig
ファイルは、以下の場所にコピーされる。
<XML_BEAN_BUILDER_SRC_DIR>/<ApplicationName>
ここで JWS を作成して Data Service コントロール 9.2 を使用できます。 JWS の作成には、以下を行ってください。
com.bea.dspctrltest
Java パッケージを右クリックし、[新規作成] [WebLogic Web サービス] を選択します。 図 7-29 のように、JWS プロジェクト名を [ファイル名] フィールドに指定します。dspctrlJWS.java
) を右クリックし、[挿入] [コントロール] (図 7-31) を選択して [コントロール選択] ダイアログ ボックスを表示します。DSPCtrl_Test
コントロールが、[既存のプロジェクト コントロール] リストに表示されます。 このコントロールを選択し、[OK] をクリックします。 図 7-32 に示すように、この作業によりコントロール アノテーション (@Control
) が WebServices アノテーション に作成され、コントロール変数を宣言します。CUSTOMER()
が呼び出されました。
図 7-35 に示すように、WebLogic Server 9.2 が起動され、Workshop テスト ブラウザでアプリケーションが開きます。
hello()
メソッドを実行できます。 図 7-36 に示すように、サーバのレスポンスが表示されます。
この節では、Data Service コントロールを編集、削除およびアンインストールする方法を示します。
Data Service コントロールを編集するには、Data Service コントロール ファイル (DSPCtrl_DSPControlFile.java
) を右クリックし、[コントロール編集] [DSP コントロール編集] を図 7-37 のように選択します。
Data Service コントロール 9.2 を削除するには、コントロール ファイルを右クリックして [削除] を選択します。
コントロールをアンインストールするには、以下の操作を行います。