2010年1月15日金曜日

Mule/CXF

Mule の CXF を試してみる。 とりあえず ルーティングとか変換は置いといて、まずは単なる一個の Service Component をWebサービスとして呼んでみたい。 ■ 前提 ■ 仕様
  • Mule + CXF でサーバ時刻を得る Web サービス を実装
  • クライアントから与えられた書式で時刻をフォーマットして返す
■ プロジェクト作成
  • Mule Project を新規作成。プロジェクト名は current-time とした。
  • conf 下に current-time-config.xml を書く
    <?xml version="1.0" encoding="UTF-8"?>
    <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:cxf="http://www.mulesource.org/schema/mule/cxf/2.2"
      xsi:schemaLocation="
         http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
         http://www.mulesource.org/schema/mule/cxf/2.2 http://www.mulesource.org/schema/mule/cxf/2.2/mule-cxf.xsd">
      <model name="currentTime">
        <service name="currentTimeSC">
          <inbound>
            <cxf:inbound-endpoint 
              address="http://localhost:65082/services/currentTimeSC"
              serviceClass="ex1.CurrentTimeService"/>
          </inbound>
          <component class="ex1.CurrentTimeServiceImpl"/>
        </service>
      </model>
    </mule>
  • Java コードは以下のようにした。
    @WebService
    public interface CurrentTimeService {
       @WebResult(name="currentTime")
       public String currentTime(@WebParam(name="pattern") String pattern);
    }
    public class CurrentTimeServiceImpl implements CurrentTimeService {
       @Override
       public String currentTime(String pattern) {
          try {
             return new SimpleDateFormat(pattern).format(new Date());
          } catch (Exception ex) {
             return ex.getMessage();
          }
       }
    }
■ 実行
  • [Run Configurations...]/"Local Mule Server" で以下のように設定
    Namecurrent-time と入力(適当でOK)
    Projectcurrent-time を選択
    Configuration Filescurrent-time-config.xml
  • [Run]押下で実行
◆ soapUI で確認
  • http://localhost:65082/services/currentTimeSC/?wsdl を指定してプロジェクト作成
  • pattern 要素に yyyy/MM/dd HH:mm:ss と指定すると、2010/01/12 16:47:53といった形式で currentTime要素が返される。
  • pattern 要素を変えると、時刻の書式が変わる事も確認できる。
◆ ブラウザ で確認
  • ブラウザ (ここではFireFox 3.5.7を使用)で、URL に http://localhost:65082/services/currentTimeSC/currentTime/pattern/HH:mm:ss を指定すると、以下のような XML が表示される
    <soap:Envelope>
       <soap:Body>
          <ns2:currentTimeResponse>
             <currentTime>16:46:01</currentTime>
          </ns2:currentTimeResponse>
       </soap:Body>
    </soap:Envelope>
    ※REST 風にサービス名、オペレーション名、パラメータ名、パラメータ値 をURLに含めている。

0 件のコメント:

コメントを投稿