データベースアクセスの Web サービス化 (その2: 新規の定義を作成)

WORF の設定ができたところで、今度は Web サービスを新しく作成してみましょう。


DADX ファイルの作成

以下のような DADX ファイルを作成し、DADX グループを作成/設定するだけで Web サービスを実行させることができます。

listQEOL.dadx

<?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 文はパラメータを取る場合はそのデータタイプ、といったものです。
後は定型的なものなので、意外と作成するのは簡単ですね。

DADX グループの作成/設定

WEB-INF\classes\groups のもとに DADX グループ名でディレクトリを作成し、その中に group.properties ファイルと上記の DADX ファイルを置きます。

group.properties ファイルはこんなかんじです。

アクセスするテーブルの入っているスキーマ(ライブラリー)は QEOL なので、その指定を URL につけています。

group.properties

dbDriver=com.ibm.as400.access.AS400JDBCDriver
dbURL=jdbc:as400://as400e/QEOL
userID=EOL400
password=PASSWORD
autoReload=true 

サーブレットの登録 (web.xml の変更)

DADX グループ名にあわせてサーブレットを登録する必要があります。

web.xml

<?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

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

実行結果の確認

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

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

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

[Top Pageに戻る]

Ads by TOK2