WSAS と Eclipse を使って Web サービスの作成を単純化する

迅速に Web サービスを作成する必要がある場合には Eclipse 用の Web Services Application Server プラグインを検討してください

今日では至る所に Web サービスがあります。どのような新しいアプリケーション、あるいは機能を開発している場合でも、Web サービスを作成する必要に迫られる可能性が高くなっています。そしてほんの少し前まで、Web サービスの作成は苦しい作業でした。WSO2 はそれを認識し、Web サービスに関する作業を楽に行える Eclipse プラグインを作成しました。この記事では、WSO2 の Web Services Application Server (WSAS) Eclipse プラグインと、このプラグインが Web サービスの開発にどう役立つのかを説明します。

Michael Galpin (mike.sr@gmail.com), Developer, eBay

Michael Galpin's photoMichael Galpin は、1998年以来、プロとして Java ソフトウェアを開発してきています。彼は現在 eBay に勤務しています。彼は California Institute of Technology で数学の学位を取得しています。



2008年 3月 04日

WSO2 の WSAS とは何か

Eclipse 用の WSAS (Web Services Application Server) プラグインの詳細に入る前に、WSAS そのものについて説明する必要があります。WSAS は Web サービスのために設計された Java™ アプリケーション・サーバーです。WSAS はオープンソース・プロジェクトとして Apache Software License の下で配布されています。WSAS には、Web サービスの実現に必要なあらゆる作業 (Web サービスの作成、デプロイ、管理、等々など) のためのツールが含まれています。また、最近の Web サービスで想定されている多くの機能 (多くの人が耳にする、各種の WS-* など) を実現するための、特に効果的なツールを提供しています。WSAS は比較的新しい製品ですが、Axis2 や Apache Tomcat など、実証ずみのオープンソース技術の上に構築されています。

WSAS は別のアプリケーション・サーバー (Tomcat や IBM® WebSphere® など) と組み合わせて使うこともできますが、WSAS 単体でも完全に機能します。この記事では WSAS をスタンドアロン・モードで使います。ここでは WSAS の一部である Eclipse プラグインに焦点を絞り、このプラグインによって Web サービスがいかに容易になるか、またこのプラグインと WSAS との関係について説明します。

WSAS (そして Web サービスの標準そのもの) の開発者の一部は、WSO2 で働いています。WSO2 は Apache プロジェクトをベースとするオープンソースのソフトウェアを開発し、またサポートやコンサルティング、トレーニング・サービスを提供する企業です。WSO2 が提供する開発者用ポータル、WSO2 Oxygen Tank から WSAS をダウンロードしてください (「参考文献」を参照)。


システム要件

Web サービスを開発するためには、Eclipse V3.3 と WSO2 の WSAS、そして WSAS Eclipse プラグインが必要です。WSAS プラグインは Eclipse Web Tools Platform を活用しています。これを最も容易に満足するためには、Eclipse Java EE を使うことです。また WSO2 の WSAS V2.1 と、JDK (Java Development Kit) V5.0 以上も必要です (「参考文献」を参照)。この記事は Mac OS X を使って書かれていますが、必要なソフトウェアはすべて Windows® と Linux® で動作します。ファイルの場所はそれぞれのオペレーティング・システムの慣習に従って調整する必要があるかもしれません。


Eclipse プラグイン

WSAS は強力な管理アプリケーションを持っており、これについては後ほど詳しく説明します。WSAS は JAR ベースのさまざまなアーカイブを Web サービスとしてデプロイすることができ、さらには Axis で使われているレガシーの Web サービス・デプロイメント記述子もサポートしています。ただし開発者は、やはりコードを記述したり、こうしたさまざまな成果物を作成したりする必要があります。Java アプリケーションを開発する作業と Eclipse を使う作業は連携しながら行われます。そして WSAS プラグインを利用することで、Java アプリケーションを WSAS で実行する Web サービスに変えることが容易になるのです。しかしこのプラグインを使い始める前に、まずインストールしてセットアップする必要があります。

インストール

WSAS プラグインをインストールするためには、Eclipse と WSAS が既にインストールされている必要があります。また、JAVA_HOME 環境変数をまだ設定していなければ、この変数を設定する必要があります。この変数は JDK がインストールされているディレクトリーを指します。この変数を設定したらインストールした WSAS システムの bin ディレクトリーからインストール・スクリプトを実行します。このスクリプトは Windows の場合は install.bat、Linux と OS X の場合は install.sh です。そうするとリスト 1 のような出力が表示されるはずです。

リスト 1. インストーラー・スクリプトを実行する
>./install.sh 
Running WSO2 Web Services Application Server, v2.1 installer...

###########################################################
#                                                         #
#               WSO2 WSAS v2.1 Installation               #
#                                                         #
###########################################################


Please select your installation mode: 
1) Eclipse WTP Plugin Installation
2) Servlet Container Installation
3) Windows NT Service Installation
4) Windows NT Service Uninstallation
:

選択肢 1 を選択します。そうするとリスト 2 のような出力が表示されるはずです。

リスト 2. Eclipse のホームを選択する
Selection: Eclipse WTP Plugin Installation

Starting WSAS Eclipse WTP Plugin installation...
Please shutdown the Eclipse instance, If Already Running ...
Please enter Eclipse WTP Home :

先ほど触れたように、WSAS プラグインは Eclipse WTP を活用しています。ホームとしては、通常は Eclipse がインストールされているディレクトリーを単純に入力します。唯一の例外は、Eclipse がインストールされているディレクトリーの外にプラグインを置くように Eclipse を設定している場合です。その場合には、外部のプラグイン・ディレクトリーを入力します。いずれの場合も、次のような出力が表示されるはずです。

リスト 3. WSAS プラグインがインストールされた様子
Copying WSAS Eclipse WTP Plugins /Applications/eclipse/plugins
OK

WSO2 WSAS Eclipse WTP Plugin installation was successful.
Please restart Eclipse WTP Instance..

これで、WSAS プラグインをインストールするために必要なことはすべて終わりました。この状態で Eclipse を起動すると、WSAS のツールとメニューが次のように表示されるはずです。

図 1. WSAS の IDE
WSAS の IDE

これで WSAS プラグインをインストールできたので、このプラグインを構成し、使えるようにする必要があります。

構成

WSAS プラグインを構成するためには、Eclipse の Preferences を開き、 Web Services > WSAS Preferences を開く必要があります (下記)。

図 2. WSAS の Preferences パネル
WSAS の Preferences パネル

ここで必要なことは、WSAS Runtime を選択する、という 1 つのことだけです。ランタイムを選択すると、WSAS プラグインはランタイムの場所を確認し、その WSAS ランタイムをロードしたことを示すメッセージを表示します。そのメッセージが表示されたら OK をクリックします。これで WSAS プラグインを使って Web サービスの開発を始める準備が整いました。


Web サービスを開発する

ここまでに行ったことは、WSAS がインストールされている場所を単純に WSAS プラグインに知らせ、そして WSAS プラグインをインストールして構成しただけです。これで、WSAS プラグインを使って Web サービスの開発を始めることができます。ここでは、単純な Java クラスを取り上げ、それを WSAS プラグインを使って Web サービスに変えます。そしてその Web サービスを WSAS を使ってテストします。

POJO を処理する

Web サービスが登場してから長い年月が経ちましたが、Web サービスが生まれて以来、Web サービスを作成するためのツールキットとフレームワークも Web サービスと共に存在してきました。これらのフレームワークは多くの場合、インターフェースの宣言や、フレームワークが定義するインターフェースの実装、あるいはコードを生成する元となる XML ファイルの作成 (あるいはこれらのすべて) を行うものでした。最近の Web サービスは、それらとは大きく異なっています。ごく普通の Java クラスを Hibernate などの永続フレームワークで使う際に POJO (Plain Old Java Object) という言葉がよく使われますが、POJO は Web サービスにも同じように当てはまります。つまり、どんな POJO でも WSAS プラグインを使うことで Web サービスになることができるのです。そのため私達が Web サービスを開発するためには、単に Java クラスを作成するだけでよくなります。ここでは例として、ある整数の因数を判定するクラスを作成します。このクラスのコードをリスト 4 に示します。

リスト 4. FactorService クラス
package org.developerworks.services;

import java.util.LinkedList;
import java.util.List;

public class FactorService {
     public Integer[] factor(int num){
          List<Integer> factors = new LinkedList<Integer>();
          int sqrt = (int) Math.floor(Math.sqrt(num));
          for (int i=1;i<=sqrt;i++){
               if (num % i == 0){
                    int mid = factors.size()/2;
                    factors.add(mid, i);
                    int quotient = num/i;
                    if (i != quotient){
                         factors.add(mid+1, quotient);
                    }
               }
          }
          return factors.toArray(new Integer[factors.size()]);
     }
}

このクラスの動作を簡単に説明しましょう。このクラスは因数分解するための整数を入力として受け付けます。そして、入力された整数の平方根以下のすべての整数に関して、入力された整数がその整数で割り切れるかどうか、ループして調べます。割り切れる場合はその整数をリストに追加し、さらに割り切れたときの商を表す整数もリストに追加します。このクラスでは整数の順番になるように追加されるため、終了時点でリストは既にソートされています。次に、このリストは配列に変換され、この配列が返されます。これは確かに POJO です。ここではインターフェースは何も実装されておらず、アプリケーション・ロジックがあるのみです。ビジネス・ロジック (整数の因数の計算) を実装する以外のことは何もしていないので、これ以上ないほど開発は簡単です。では、これを Web サービスに変換するのはどれほど簡単なのでしょう。それを、WSAS プラグインを使って調べてみましょう。

Web サービスを作成し、デプロイする

新しい Web サービスを作成するためには、まず Web アプリケーションを作成します。そのためには File > New > Other の順に選択します (図 3)。

図 3. 新規 Web アプリケーション・ウィザードの開始
新規 Web アプリケーション・ウィザードの開始

今度は Web > Dynamic Web Project を選択します。

図 4. 新規 Dynamic Web Project
新規 Dynamic Web Project

すると新規 Dynamic Web Project インターフェースが表示されます。

図 5. 新規 Dynamic Web Project
新規 Dynamic Web Project

ここで 1 つ気が付くことは、Target Runtime が指定されていないことです。ここでは WSAS をターゲット・ランタイムとして指定する必要があるので、New をクリックします。すると New Server Runtime インターフェースが表示されます。

図 6. New Server Runtime
New Server Runtime

New Server Runtime インターフェースの中で、ランタイムのタイプとして WSO2 > WSO2 WSAS を指定します。また、「Also create new local server (新しいローカル・サーバーも作成)」の隣にあるチェックボックスを必ず選択し、Finish をクリックします。すると Dynamic Web Project の画面に戻るはずです。

図 7. サーバー・ランタイムが指定された Dynamic Web Project
サーバー・ランタイムが指定された Dynamic Web Project

Next をクリックし、Finish をクリックしないようにします。すると Project Facets インターフェースが表示されるはずです。

図 8. Project Facets
Project Facets

WSAS Web Services ファセットを選択し、ここで Finish をクリックします。するとスケルトン Web プロジェクトが作成されます。これで、このプロジェクトに FactorService クラスを追加することができます (File > New > Class)。また FactorService クラスから Web サービスを作成することもできます。再度 File > New > Other の順で選択しますが、今度は Web Services > Web Service を選択します。

図 9. 新しい Web サービス
新しい Web サービス

Next をクリックすると、新しい Web サービスのインターフェースが表示されます。

図 10. 新しい Web サービスを定義する
新しい Web サービスを定義する

Configuration の下に Web service runtime (Web サービスのランタイム) として Apache Axis が選択されていることに注目します。これを変更する必要があるので、ここをクリックします。そうすると Service Deployment Configuration インターフェースが表示されます。

図 11. Service Deployment Configuration
Service Deployment Configuration

今度は Web service runtime (Web サービスのランタイム) を WSO2 Web Services Application Server に変更し、OK をクリックします。そうすると Web Service インターフェースに戻るはずです。

図 12. WSAS ランタイムが選択された Web Service インターフェース
WSAS ランタイムが選択された Web Service インターフェース

この画面で、Publish the Web service (Web サービスを公開) にチェック・マークを付け、Next をクリックします。すると WSAS Web Service Java Bean Configuration インターフェースが表示されます。

図 13. WSAS Web service Java Bean Configuration
WSAS Web service Java Bean Configuration

この画面で Generate Default Services.xml file (デフォルトの Services.xml ファイルを作成) が選択されていることを確認し、Finish をクリックします。すると、WSAS プラグインはこの Web サービスに必要なすべての成果物を作成し、このサービスをインストールした WSAS システムに公開します。サービスが公開されていることを確認するためには WSAS の管理コンソールを表示します。このコンソールは通常 https://localhost:9443 にあります。コンソールにログインし、Services を選択します。

図 14. WSAS の管理コンソールとサービスのリスト
WSAS の管理コンソールとサービスのリスト

WSAS にデプロイされる Web サービスの一覧の中に FactorService が見つかるはずです。一覧の中にある、それ以外のサービスは、WSAS に同梱されているデフォルトの Web サービスです。

おめでとうございます。これで Web サービスを作成でき、デプロイすることができました。もちろん、単に何かを作成できたからといって、それが動作するかどうかはわかりません。この Web サービスをテストする必要があります。この場合も、WSAS を使えば簡単にテストすることができます。


Web サービスをテストする

作成した Web サービスを見てみましょう。Service テーブルの中を見ると、WSDL V2.0 View へのリンクがあるのがわかります。これをクリックすると下記の WSDL が表示されるはずです。

リスト 5. FactorService の WSDL
<wsdl2:description xmlns:wsdl2="http://www.w3.org/ns/wsdl"
     xmlns:tns="http://services.developerworks.org"
     xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"
     xmlns:ns0="http://services.developerworks.org"
     xmlns:ns1="http://org.apache.axis2/xsd"
     xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
     xmlns:wsdlx="http://www.w3.org/ns/wsdl-extensions"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:whttp="http://www.w3.org/ns/wsdl/http"
     xmlns="http://www.w3.org/ns/wsdl"
     targetNamespace="http://services.developerworks.org">
     <wsdl2:documentation>FactorService</wsdl2:documentation>
     <wsdl2:types>
          <xs:schema xmlns:ns="http://services.developerworks.org"
               attributeFormDefault="qualified" elementFormDefault="qualified"
               targetNamespace="http://services.developerworks.org">
               <xs:element name="factor">
                    <xs:complexType>
                         <xs:sequence>
                              <xs:element minOccurs="0" name="num"
                                   type="xs:int" />
                         </xs:sequence>
                    </xs:complexType>
               </xs:element>
               <xs:element name="factorResponse">
                    <xs:complexType>
                         <xs:sequence>
                              <xs:element maxOccurs="unbounded" minOccurs="0"
                                   name="return" type="xs:int" />
                         </xs:sequence>
                    </xs:complexType>
               </xs:element>
          </xs:schema>
     </wsdl2:types>
     <wsdl2:interface name="ServiceInterface">
          <wsdl2:operation name="factor"
               pattern="http://www.w3.org/ns/wsdl/in-out">
               <wsdl2:input element="ns0:factor" wsaw:Action="urn:factor" />
               <wsdl2:output element="ns0:factorResponse"
                    wsaw:Action="urn:factorResponse" />
          </wsdl2:operation>
     </wsdl2:interface>
     <wsdl2:binding name="FactorServiceSOAP11Binding"
          interface="tns:ServiceInterface" type="http://www.w3.org/ns/wsdl/soap"
          wsoap:version="1.1">
          <wsdl2:operation ref="tns:factor" wsoap:action="urn:factor" />
     </wsdl2:binding>
     <wsdl2:binding name="FactorServiceSOAP12Binding"
          interface="tns:ServiceInterface" type="http://www.w3.org/ns/wsdl/soap"
          wsoap:version="1.2">
          <wsdl2:operation ref="tns:factor" wsoap:action="urn:factor" />
     </wsdl2:binding>
     <wsdl2:binding name="FactorServiceHttpBinding"
          interface="tns:ServiceInterface"
          type="http://www.w3.org/ns/wsdl/http">
          <wsdl2:operation ref="tns:factor"
               whttp:location="FactorService/factor" />
     </wsdl2:binding>
     <wsdl2:service name="FactorService"
          interface="tns:ServiceInterface">
          <wsdl2:endpoint name="SecureSOAP11Endpoint"
               binding="tns:FactorServiceSOAP11Binding"
               address="https://192.168.0.104:9443/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a SOAP 11 binding over a HTTPS
               </wsdl2:documentation>
          </wsdl2:endpoint>
          <wsdl2:endpoint name="SecureSOAP12Endpoint"
               binding="tns:FactorServiceSOAP12Binding"
               address="https://192.168.0.104:9443/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a SOAP 12 binding over a HTTPS
               </wsdl2:documentation>
          </wsdl2:endpoint>
          <wsdl2:endpoint name="SecureHTTPEndpoint"
               binding="tns:FactorServiceHttpBinding"
               address="https://192.168.0.104:9443/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a HTTP binding over a HTTPS
               </wsdl2:documentation>
          </wsdl2:endpoint>
          <wsdl2:endpoint name="SOAP11Endpoint"
               binding="tns:FactorServiceSOAP11Binding"
               address="http://192.168.0.104:9762/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a SOAP 11 binding over a HTTP
               </wsdl2:documentation>
          </wsdl2:endpoint>
          <wsdl2:endpoint name="SOAP12Endpoint"
               binding="tns:FactorServiceSOAP12Binding"
               address="http://192.168.0.104:9762/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a SOAP 12 binding over a HTTP
               </wsdl2:documentation>
          </wsdl2:endpoint>
          <wsdl2:endpoint name="HTTPEndpoint"
               binding="tns:FactorServiceHttpBinding"
               address="http://192.168.0.104:9762/services/FactorService">
               <wsdl2:documentation>
                    This endpoint exposes a HTTP binding over a HTTP
               </wsdl2:documentation>
          </wsdl2:endpoint>
     </wsdl2:service>
</wsdl2:description>

ここで、いくつかのことに気付くはずです。wsdl12:types/xs:schema の下に、factorfactorResponse という 2 つの型が定義されています。これらは、この Web サービスの入出力パラメーターです。factor は単一の整数であり、factorResponse は制限のない整数のシーケンスです。もし開発者が自分で WSDL を作成しなければならないとしたら、おそらくこれを作成するはずです。しかしその必要はありませんでした。WSAS と WSAS プラグインが作成してくれたのです。

WSAS で実行しているこの Web サービスを、さらに調べてみましょう。Service テーブルに戻り、Services 列の FactorService リンクをクリックします。そうすると Service Management インターフェースが表示されます。

図 15. Service Management
Service Management

この画面から、この Web サービスに対してさまざまなことができます。セキュリティーやトランスポートの構成を管理することもできますが、ここでは Try It リンクをクリックしてみましょう。すると Try Web Service インターフェースが表示されるはずです。

図 16. Try Web Service
Try Web Service

いくつか数字を入力して、少しいじってみましょう。ここでは何が行われているのでしょう。WSAS は Java クラスを直接呼び出し、その結果を表示しているのでしょうか。それとも、この Web サービスを呼び出しているプロキシーを呼び出しているのでしょうか。HTTP トラフィックを調べてみると、リスト 6 とリスト 7 に示すようなものが得られるはずです。

リスト 6. FactorService.factor(783) を呼び出すことによる HTTP リクエスト
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
     xmlns:wsa="http://www.w3.org/2005/08/addressing">
     <s:Header>
          <wsa:To>https://localhost:9443/services/FactorService</wsa:To>
          <wsa:ReplyTo>
               <wsa:Address>
                    http://www.w3.org/2005/08/addressing/anonymous
               </wsa:Address>
          </wsa:ReplyTo>
          <wsa:MessageID>
               http://identifiers.wso2.com/messageid/1197868769405/8468659498
          </wsa:MessageID>
          <wsa:Action>urn:factor</wsa:Action>
     </s:Header>
     <s:Body>
          <p:factor xmlns:p="http://services.developerworks.org">
               <num xmlns="http://services.developerworks.org">
                    783
               </num>
          </p:factor>
     </s:Body>
</s:Envelope>

これは SOAP リクエストです。このリクエストはリスト 5 で見た WSDL に対して検証されます。SOAP リクエストから何がわかるでしょうか。

リスト 7. FactorService.factor(783) を呼び出すことによる HTTP レスポンス
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope
     xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
     xmlns:wsa="http://www.w3.org/2005/08/addressing">
     <soapenv:Header>
          <wsa:Action>
               urn:factorResponse
               </wsa:Action>
          <wsa:RelatesTo>
                    http://identifiers.wso2.com/messageid/1197868769405/8468659498
               </wsa:RelatesTo>
     </soapenv:Header>
     <soapenv:Body>
          <ns:factorResponse xmlns:ns="http://services.developerworks.org">
                    <ns:return>1</ns:return>
                    <ns:return>3</ns:return>
                    <ns:return>9</ns:return>
                    <ns:return>27</ns:return>
                    <ns:return>29</ns:return>
                    <ns:return>87</ns:return>
                    <ns:return>261</ns:return>
                    <ns:return>783</ns:return>
          </ns:factorResponse>
     </soapenv:Body>
</soapenv:Envelope>

これは SOAP レスポンスです。これも先ほどの WSDL に対して検証されます。WSAS は、(同じく WSAS の一部である) WSRequest という Ajax ライブラリーを使って Web サービスを直接呼び出しています。プロキシーは使われていません。このリクエストとレスポンスは、この Web サービスを利用するクライアントが使うリクエストの種類そのものであり、またこの Web サービスがクライアントに返送する種類のレスポンスそのものです。


まとめ

Web サービスは大きく進歩しました。もはやインターフェースを作成したり実装したりする必要はなくなりました。コードの生成や XML ファイルの作成も必要ありません。作成が必要なものを WSAS が単純化してくれます。WSAS を使うことで、Web サービスを作成するために必要なものは、ほんのわずかになります。その、わずかに必要なものを、Eclipse 用の WSAS プラグインが提供してくれるのです。WSAS と WSAS プラグインを使うことで、ビジネス・ロジックの作成のみに集中できるようになり、他のことを気にせずにすむようになります。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • Eclipse に関する質問を議論するための最初の場所として、Eclipse Platform newsgroups があります (このリンクをクリックすると、デフォルトの Usenet ニュース・リーダー・アプリケーションが起動し、eclipse.platform が開きます)。
  • Eclipse newsgroupsには、Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
  • developerWorks blogs から developerWorks のコミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=299131
ArticleTitle=WSAS と Eclipse を使って Web サービスの作成を単純化する
publish-date=03042008