2009年10月20日火曜日

観察:Getting Started with FUSE 4 (2)

前回前々回に続いて、FUSE の webinar 「Getting Started with FUSE 4」の復習。

payment-service-bc

■beans.xml の編集
cxfbc:consumer 要素を使っている。詳細は[ここ] 他は、payment-service-se の beans.xml と同様。 ちなみに、webinar では soapUI を使って SOAPメッセージを送っているが、 payment-service-se 中の PaymentServiceクラス(自動生成されたやつ)を使えば、以下のようなコードでWebサービスの動作確認ができる。
public static void main(String[] args) {
    ObjectFactory factory = new ObjectFactory();

    Transfer payload = factory.createTransfer();
    payload.setAmount("123");
    payload.setFrom("Me");
    payload.setTo("You");
   
    PaymentService service = new PaymentService();
    Payment endpoint = service.getSoap();
    Response response = endpoint.transferFunds(payload);

    System.out.println(response.getReply());
}

payment-service-batch

■ プロジェクトを生成した直後の状態
servicemix-osgi-camel-archetype を使って、以下のようなファイルを含むプロジェクトの雛形を作成。
  • src/main/java/com/example/fuse/payment_service_batch2/MyTransform.java route の中で使用する Javaクラス のスケルトン。使わないのでsrc/main/javaごと削除する。
  • src/main/resources/META-INF/spring/camel-context.xml camel のルーティング。後で編集する
  • pom.xml maven の設定ファイル。後で編集する。

■ camel-context の編集
camelContext 要素内で、route が二つ定義されている。
  • まず一つめ
    • FUSEホーム直下の tmp/file-in フォルダにおかれたファイルを読み込む
    • それを文字列にする
    • 読んだ文字列をログに出力する
    • 読んだ文字列を XMLとして解釈し、XPATH式 transfers/transfer の要素を、ログ出力すると同時に、JBIの
    • paymentService:endpointに送る
  • 二つめ
    • 2秒ごとのタイマーイベントに応じて
    • CDATA で定義した内容をメッセージボディとし、
    • それをログに出力し、
    • ファイル名を transfer.xml とするよう宣言し、
    • FUSEホーム直下の tmp/file-in に保存する

==== ====
だいたい webinar の内容はわかった。

SeriviceMix 3.X までは、仕事でも私用でも以前から若干経験があったけど、ServiceMix4で OSGI ベースになってから、使い方が大幅に変わったり、以前の資料の大半が使えなくなったりしてちょっと敬遠していたけど、まあ、なんとかなりそう。

むしろ昔より使いやすいかもしれない。提供されている maven アーキタイプに逆らわずに、自然な流れをキープすることに留意すれば、わりと良い生産性が見込めるかもしれない。 ただやはり、情報や資料が少なすぎるのは、リスクになるかも。

0 件のコメント:

コメントを投稿