2009年10月21日水曜日

ServiceMix Tutorial を FUSE ESB 4.1で

ServiceMix のサイトにあるチュートリアルと同じ事を、Eclipse(3.5.0) と FUSE ESB(ServiceMix4)を用いてやってみる。(ServiceMix のバージョンは、4.1.0.2-fuse)

■ 概要
「あるディレクトリを監視して、ファイルが置かれたら別のディレクトリに移動する。」という、極々シンプルな仕様。流れとしては、まずservice unit、service assembly の順に作成し、これをServiceMixにインストールして動作確認するだけ。至って簡単。

■ service unit
ファイルの監視と移動にはservicemix-file コンポーネントを用いる。servicemix-file の動作は、service unit で定義するが、これを以下のように eclipse プロジェクトとして作成する。
  • [New]>[Project...]で [Maven Project]を選択
  • Archetype の選択で "Nexus Indexer"カタログから"servicemix-service-unit"を指定 (無ければ Maven Indexビューで"http://repo.fusesource.com/maven2-snapshot" か"http://repo.fusesource.com/maven2"を追加するとリストアップされるようになる。)
  • Artifact Id 等は説明の都合上以下のようにする。
    • Group Id:org.apache.servicemix.tutorial
    • Artifact Id:tutorial-file-su
    • Version:0.0.1-SNAPSHOT
    • Package:org.apache.servicemix.tutorial.tutorial_file_su
次に以下のようにpom.xmlを編集する。
  • project/dependenciesに、以下のように servicemix-file への dependency を追加する。(JUnitのdependency はいらないので消す。)
    <dependency>
        <groupId>org.apache.servicemix</groupId>
        <artifactId>servicemix-file</artifactId>
        <version>2009.03-fuse-SNAPSHOT</version>
    </dependency>
    
  • project/name要素 を "Tutorial :: File SU"に変更

また以下のように xbean.xml を作成する
  • src/main/resources直下に xbean.xml を作成する
  • 内容は以下のように記述する
    <beans
            xmlns:file="http://servicemix.apache.org/file/1.0"
            xmlns:tut="urn:servicemix:tutorial"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <file:sender service="tut:file" endpoint="sender"
             directory="file:///c:/tmp/gert/sender"/>
        <file:poller service="tut:file" endpoint="poller"
             file="file:///c:/tmp/gert/poller" targetService="tut:file"
             targetEndpoint="sender"/>
    </beans>
  • sender@directory にはコピー先のディレクトリパス、poller@file には監視対象のディレクトリパスを記述する
  • Windows 環境でドライブレターを含む場合、上記のように"file:///c:/tmp/poller/"みたいに書く
  • servicemix-file の細かいことは、元サイトを参照
これを次のようにビルドする。
  • [Run As]>[Maven install]
  • 成果物がローカルリポジトリにインストールされるが、確認するには eclipse のMaven Indexビューで local リポジトリを見ればいい。
■ service assembly
service unit を使うには service assembly に組み込んで ServiceMix に配備するが、service assembly も 以下のように eclipse プロジェクトとして作成する。
  • [New]>[Project...]で [Maven Project]を選択
  • Archetype の選択で "Nexus Indexer"カタログから"servicemix-service-assembly"を指定
  • Artifact Id 等は説明の都合上以下のようにする。
    • Group Id:org.apache.servicemix.tutorial
    • Artifact Id:tutorial-sa
    • Version:0.0.1-SNAPSHOT
    • Package:org.apache.servicemix.tutorial.tutorial_sa
次のように pom.xml を編集。
  • project/dependencies に、上で作成・インストールした service unit を指定する。
    <dependencies>
       <dependency>
         <groupId>org.apache.servicemix.tutorial</groupId>
         <artifactId>tutorial-file-su</artifactId>
         <version>0.0.1-SNAPSHOT</version>
       </dependency>
     </dependencies>
    
  • project/name を "Tutorial :: SA"に変更
これを [Run As]>[Maven install] でビルドする。確認は service unit と同様

■ インストールと動作確認
  • ServiceMix コンソールから次のコマンドでインストール。-s オプションがあるので自動的にスタートする。
    osgi/install -s mvn:org.apache.servicemix.tutorial/tutorial-sa/0.0.1-SNAPSHOT/zip
  • osgi/list で、最終行に以下のような行があることを確認。
    [ 175] [Active     ] [       ] [   60] mvn:org.apache.servicemix/tutorial-sa/0.0.1-SNAPSHOT/zip
  • nmr/list で以下の行が含まれている事を確認
    {urn:servicemix:tutorial}file:sender
    {urn:servicemix:tutorial}file:poller
  • jbi/list で以下の行が含まれている事を確認
    [Started ] [tutorial-sa                     ]     FUSE TRIAL1 :: SA
  • c:/tmp/gert/poller に適当なファイルを置いて、自動的にc:/tmp/gert/sender に移動される事を確認
終わり。

0 件のコメント:

コメントを投稿