Configuring Data Services
Platform 4.5+ が必要
データ サービスの構成
データ サービスは、主として nexaweb-data.xml ファイルで構成します。
また、nexaweb-sql.xmlファイルで statementHandlerDefinitions を定義することによって、SQL データ サービスを構成することもできます。
nexaweb-data.xml ファイルの構成
nexaweb-data.xmlファイルには次のセクションが含まれています。
コンフィギュレーション セクション | 説明 |
requestProcessorDefinitions | すべてのサービス リクエストでグローバルに使用できる、データ サービス タイプごとに使用できる、あるいは dataRequestDefinitions で使用できるプリプロセッサおよびポストプロセッサを定義します。 |
globalProcessors | 任意のデータ サービス タイプの全サービス リクエストにデータ サービスが適用される、プリプロセッサおよびポストプロセッサを示します。 |
dataServiceDefinitions | データ サービス プラグインを通じて使用可能なデータ サービス タイプを定義します。また、そのデータ サービス タイプを使用して、サービス リクエストごとにデータ サービス タイプのプリプロセッサおよびポストプロセッサを指定します。 |
dataRequestDefinitions | 外部SQL または Web サービスタイプのデータサービスからデータを取得するための情報をサーバー上で定義します。 |
requestProcessorDefinitions
プロセッサは、データ リクエストまたはデータ結果を適切な構造にフォーマット設定します。
requestProcessorDefinitionsセクションで、グローバルプロセッサまたはデータサービスタイププロセッサとして、あるいは dataRequestDefinitions で割り当て可能なプリプロセッサおよびポストプロセッサを定義します。
requestProcessorDefinitionsセクションには次の要素が含まれています。
要素 | 説明 |
preProcessorDefinitions | プリプロセッサの定義を示します。 |
postProcessorDefinitions | ポストプロセッサの定義を示します。 |
processorDefinitionタグを使用して、preProcessorDefinition要素または postProcessorDefinition要素でプロセッサを定義します。
次の表に、processorDefinitionタグの属性についての説明を示します。
属性 | 説明 |
Class | プロセッサの実装クラスを指定します。 |
ID | プロセッサをグローバル プロセッサまたはデータ サービス タイプ固有のプロセッサとして、あるいは dataRequestDefinition で使用しているときに参照するために、プロセッサを一意に識別するための ID を指定します。 |
プロセッサでは次の実装クラスが使用されます。
プロセッサ タイプ | 実装クラス | 説明 |
プリプロセッサ | DataRequestPreProcessor | データ リクエスト情報を変更するためのインターフェイス。データ サービスは、関連付けられているデータ サービスへのデータ サービス リクエストを行う前にプリプロセッサを呼び出します。 |
ポストプロセッサ | DataRequestPostProcessor | クライアントに送信する途中に生データを変更するためのインターフェイス。データ サービスは、データ サービス結果をリクエスト元のクライアントに戻す前にポストプロセッサを呼び出します。 |
例:
<requestProcessorDefinitions>
<preProcessorDefinitions>
<processorDefinition id="a" class="DataRequestPreProcessor"/>
<processorDefinition id="b" class="DataRequestPreProcessor"/>
</preProcessorDefinitions>
<postProcessorDefinitions>
<processorDefinition id="1" class="DataRequestPostProcessor"/>
<processorDefinition id="2" class="DataRequestPostProcessor"/>
</postProcessorDefinitions>
</requestProcessorDefinitions>
さらに、nexaweb-sql.xmlファイルと nexaweb-webservices.xml ファイルで statementHandlerDefinitionsを指定すると、これらのファイルで定義されている SQL 文、REST リクエスト、または SOAP リクエストのデータをフォーマット設定することができます。
globalProcessors
このセクションでは、全データ サービスタイプによってアクセスされる全データを適切な構造にフォーマット設定するために必要なプリプロセッサとポストプロセッサを示します。
globalProcessorsセクションには次の要素が含まれています。
要素 | 説明 |
preProcessors | グローバル プロセッサとして使用されるプリプロセッサを参照します。 |
postProcessors | グローバル プロセッサとして使用されるポストプロセッサを参照します。 |
processorタグを使用して、requestProcessorDefinitions 要素でグローバルに使用するプリプロセッサまたはポストプロセッサとして定義されているプロセッサの ID を指定します。
例:
<globalProcessors>
<preProcessors>
<processor="a"> </processor>
</preProcessor>
<postProcessors>
<processor="1"> </processors>
</postProcessors>
</globalProcessors>
dataServiceDefinitions
nexaweb-data.xmlファイルの dataServiceDefinitions セクションには、外部データソースにアクセスするために使用可能なデータサービスタイプごとに 1 つのエントリが含まれています。
現在、Nexaweb では次のデータサービスタイプをサポートしています。
データ サービス タイプ | 説明 |
SQL | Nexaweb アプリケーションが JDBC (Java Database Connectivity) を通じて外部データベースからデータを取得および更新する方法を提供します。 |
Web サービス | Nexaweb アプリケーションが REST と SOAP を使用して Web サービスからデータを取得および更新する方法を提供します。 |
また、データ サービス タイプごとにプリプロセッサとポストプロセッサを指定して、そのデータサービス タイプを使用するすべての serviceRequestのデータをフォーマット設定できます。
dataServiceDefinitionsセクションには次の要素が含まれています。
要素 | 説明 |
processors | このデータ サービス タイプを使用する全リクエストの全プロセッサを示します。 |
preProcessors | このデータ サービス タイプを使用する全リクエストに使用されるプリプロセッサを参照します。 |
postProcessors | このデータ サービス タイプを使用する全リクエストに使用されるポストプロセッサを参照します。 |
processor タグを使用して、requestProcessorDefinitionsセクションで SQL またはWeb サービスタイプのデータサービスを使用する全 serviceRequest のプリプロセッサまたはポストプロセッサとして定義されているプロセッサの ID を指定します。
例:
<dataServiceDefinitions>
<dataService id="sql" class="com.nexaweb.server.data.services.sqlDataService">
<processors>
<preProcessors>
<processor="b"> </processor>
</preProcessor>
<postProcessors>
<processor="2"> </processors>
</postProcessors>
</processors>
</dataService>
</dataServiceDefinitions>
dataRequestDefinitions
このセクションでは、サーバーからデータ ソースへのアクセスに使用される dataRequestDefinitions を定義します。
dataRequestDefintion では、サーバー上で、serviceRequest の主要コンポーネントである、外部データへのアクセスに必要な情報を定義します。したがって、この情報はすべてクライアント UI ファイルで指定する必要はありません。また、引数を使用する serviceRequest を作成するために、dataRequestDefinitionを使用して dataRequestDefinition の主要コンポーネントを定義します。
次の表に、dataRequestDefinition の要素についての説明を示します。
要素 | 説明 | 必須 |
ID | この dataRequestDefinition を、serviceRequest での参照用に一意に識別するための ID を指定します。 | 必須 |
serviceResourceDefinition | 関連付けられているデータ サービスを使用して実行する SQL 文、REST リクエスト、または SOAP リクエストを指定します。 | dataRequestDefinition で serviceResourceDefinition または serviceResourceReferenceを指定する必要があります。 |
serviceResourceReference
| nexaweb-sql.xmlまたは nexaweb-webservices.xml ファイルで定義済みの、実行する SQL 文、REST リクエスト、または SOAP リクエストの ID を指定します。 | dataRequestDefinition でserviceResourceDefinitionまたはserviceResourceReferenceを指定する必要があります。 |
parameterMap | この接続の名前付きパラメータ マップを指定します。 | 省略可能 |
processors | この定義のデータのフォーマット設定に必要なプリプロセッサまたはポストプロセッサの ID を指定します。 | 省略可能 |
dataRequestDefinitions セクションには次の要素が含まれています。
要素 | 説明 |
processors | この dataRequestDefinitionのすべてのプロセッサを示します。 |
preProcessors | この dataRequestDefinition に使用されるプリプロセッサを参照します。 |
postProcessors | この dataRequestDefinition に使用されるポストプロセッサを参照します。 |
processor タグを使用して、requestProcessorDefinitions要素でこの dataRequestDefinition のプリプロセッサまたはポストプロセッサとして定義されているプロセッサの ID を指定します。
serviceResourceReference の例
次のようにserviceResourceDefinition を使用して dataRequestDefinition を指定します。
<dataRequestDefinition id="FlickrSearchRest">
<serviceResourceReference dataServiceId="WebService" serviceResourceId="searchFlickrParam" />
nexaweb-data.xmlファイルには、nexweb-webservice.xmlファイルで定義された WebService タイプのデータサービスリクエストsearchFlickrParamを参照するdataRequestDefinition、FlickrSearchRestが定義されています。
serviceResourceDefinition の例
次のようにserviceResourceDefinition を使用してdataRequestDefinitionを指定します。
<dataRequestDefinition id=”getDepartments”>
<serviceResourceDefinition>
<sqlStatement connectionId="engineering" xmlns=”http://nexaweb.com/service/data/sql”>
<statement>SELECT * FROM department where dept=’’{0}’’</statement>
</sqlStatement>
</serviceResourceDefinition>
<parameterMap>
<parameterMapping name=”deptId”>
<default>engineering</default>
</parameterMapping>
</parameterMap>
</dataRequestDefinition>
この例では、dataRequestDefinition、getDepartmentsに、SQL 文を使用して外部データソースにアクセスする serviceResourceDefinition が含まれています。SQL 文によって、dept 変数の値と一致する部門を選択します。ユーザーが値を指定しない場合は、parameterMapによって dept 変数のユーザー指定の値、deptID、または "engineering" のデフォルト値を渡すことができます。
サーバー上の nexaweb-data.xml ファイルで定義された dataRequestDefinition を、クライアント UI ファイルで定義済みの serviceRequest で使用します。この dataRequestDefinition を使用するには、次のようにクライアント UI ファイルで serviceRequest を作成します。
<serviceRequest id=” getDepartmentRequest” dataRequestId=” getDepartments” xmlns=”http://nexaweb.com/service/data”>
<parameters>
<parameter name=”deptId”>{0}</parameter>
</parameters>
</serviceRequest>serviceRequest、getDepartmentRequestで、dataRequestIDとしてdataRequestDefinition、getDepartmentsを参照します。パラメータ deptId を指定し、このパラメータが受け取ったユーザー指定の値を getDepartments dataRequestDefinition で定義された deptID パラメータマッピングに渡します。