WORF の設定ができたところで、今度は Web サービスを新しく作成してみましょう。
以下のような DADX ファイルを作成し、DADX グループを作成/設定するだけで Web サービスを実行させることができます。
<?xml version="1.0"?>
<DADX xmlns="http://schemas.ibm.com/db2/dxx/dadx"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<operation name="listCustomers">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
Lists Customers </documentation>
<query>
<SQL_query>SELECT * FROM TOKMSP</SQL_query>
</query>
</operation>
<operation name="findCustomerByID">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
Finds Customer By ID </documentation>
<query>
<SQL_query>SELECT * FROM TOKMSP WHERE TKBANG=:id</SQL_query>
<parameter name="id" type="xsd:string"/>
</query>
</operation>
</DADX>
|
設定しているのはオペレーションの名前と、そのオペレーションで実行される
SQL 文、また、SQL 文はパラメータを取る場合はそのデータタイプ、といったものです。
後は定型的なものなので、意外と作成するのは簡単ですね。
WEB-INF\classes\groups のもとに DADX グループ名でディレクトリを作成し、その中に group.properties ファイルと上記の DADX ファイルを置きます。

group.properties ファイルはこんなかんじです。
アクセスするテーブルの入っているスキーマ(ライブラリー)は QEOL なので、その指定を URL につけています。
dbDriver=com.ibm.as400.access.AS400JDBCDriver dbURL=jdbc:as400://as400e/QEOL userID=EOL400 password=PASSWORD autoReload=true |
DADX グループ名にあわせてサーブレットを登録する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app>
<servlet>
<servlet-name>dxx_sales_db</servlet-name>
<servlet-class>com.ibm.etools.webservice.rt.dxx.servlet.DxxInvoker</servlet-class>
<init-param>
<param-name>faultListener</param-name>
<param-value>org.apache.soap.server.DOMFaultListener</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet>
<servlet-name>dxx_sample</servlet-name>
<servlet-class>com.ibm.etools.webservice.rt.dxx.servlet.DxxInvoker</servlet-class>
<init-param>
<param-name>faultListener</param-name>
<param-value>org.apache.soap.server.DOMFaultListener</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet>
<servlet-name>dxx_travel</servlet-name>
<servlet-class>com.ibm.etools.webservice.rt.dxx.servlet.DxxInvoker</servlet-class>
<init-param>
<param-name>faultListener</param-name>
<param-value>org.apache.soap.server.DOMFaultListener</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AppGroup1</servlet-name>
<servlet-class>com.ibm.etools.webservice.rt.dxx.servlet.DxxInvoker</servlet-class>
<init-param>
<param-name>faultListener</param-name>
<param-value>org.apache.soap.server.DOMFaultListener</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AppGroup1</servlet-name>
<url-pattern>/AppGroup1/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dxx_sales_db</servlet-name>
<url-pattern>/sales/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dxx_sample</servlet-name>
<url-pattern>/db2sample/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dxx_travel</servlet-name>
<url-pattern>/travel/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
|
WSDL を見てみましょう。
http://<ホスト名>/<Web アプリケーションのコンテクスト>/<DADX
グループのディレクトリ名>/<DADX のファイル名>/WSDL でブラウザーからアクセスします。

テストを行ってみましょう。
http://<ホスト名>/<Web アプリケーションのコンテクスト>/<DADX
グループのディレクトリ名>/<DADX のファイル名>/TEST でブラウザーからアクセスします。

左上のペインに使用可能な Web サービスのメソッド (DADX ファイルで定義したオペレーション)
が表示されます。
"listCustomers" を選択すると、右上のペインの内容がそれに応じて変わっているのがわかりますね。ここで
"Invoke" ボタンを押すと、Web サービスが実行されて、下側のペインに実行結果が表示されます。

左上のペインで、"findCustomerByID" を選択すると、これは引数を取るタイプのサービスなので、右上のペインに引数のタイプに応じた入力フィールドがあわせて表示されます。"Invoke" ボタンを押すと、下側のペインに実行結果が表示されます。(ちなみに、以下の例で下側のペインに表示されているのは上の "listCustomers" の実行結果です。引数と結果があっていないので ... 勘違いされないように)

|
|