Mavenを利用したMuleアプリケーションの開発手順を紹介します。

事前に次の環境が構築されていることを前提とします。

  • Java SE 1.5以上
  • Apache Maven 2以上
  • インターネットに接続できる環境

Mavenの設定

MavenでMuleアプリケーションを作成するには、Mavenのarchetype (project wizard)を利用します。Mavenのarchetypeを利用するには、Mavenのsettings.xml(通常はホームディレクトリの.m2/に作成する)に次の設定を追加します。

~/.m2/settings.xml
<settings>
  ...
  <pluginGroups>
    <pluginGroup>org.mule.tools</pluginGroup>
  </pluginGroups>
  ...
</settings>

プロジェクトの作成

次のコマンドを実行すると、MuleアプリケーションのMavenプロジェクトが作成されます。

$ mvn mule-project-archetype:create -DartifactId=HelloApp -DmuleVersion=3.1.2

このプロジェクトの作成は対話形式で行われ、次のポイントで入力を求められますが、ひとまずデフォルト値でよいでしょう。

  • [INFO] description:
  • [INFO] muleVersion:
  • [INFO] package:
  • [INFO] transports:
  • [INFO] modules:

正常にプロジェクトが作成されると「[INFO] BUILD SUCCESS」を含むテキストが画面に表示されます。

プロジェクト作成の際に実行したコマンドに含まれる -D〜 は、プロジェクトを作成する際のパラメータを定義しています。次に代表的なパラメータについて補足します。

  • artifactId
    必須です。MavenプロジェクトのArtifact IDを定義します。
  • muleVersion
    必須です。Mule ESBのバージョンを定義します。
  • description [Dedault: ]
    Mavenプロジェクトの概要説明を定義します。
  • package [Dedault: ]
    ベースになるパッケージを定義します。MavenプロジェクトのGroup IDになるのでちゃんと定義した方が良いでしょう。
    e.g. com/company/mule/apps
  • transports [Dedault: file,http,jdbc,jms,vm]
    Muleで利用するトランスポートを次から選択して指定します。分からなければ、デフォルトでOKです。
    ajax, ejb, file, ftp, http, https, imap, imaps, jbpm, jdbc, jetty, jetty-ssl, jms, jnp, multicast, pop3, pop3s, quartz, rmi, servlet, smtp, smtps, ssl, tls, stdio, tcp, udp, vm, xmpp
  • modules [default: client,cxf,management,scripting,sxc,xml]
    Muleで利用するモジュールを次から選択して指定します。分からなければ、デフォルトでOKです。
    acegi, annotations, atom, boot, builders, client, cxf, guice, ibeans, jaas, jbossts, jersey, json, management, ognl, pgp, rss, scripting, spring-extras, spring-security, sxc, ws, xml
  • interactive [default: true]
    MuleアプリケーションのMavenプロジェクトの作成時に、対話形式で作成するかどうかを定義します。対話形式での定義の変更が必要でなければ、falseで定義すると良いでしょう。

プロジェクトのビルド

Mavenプロジェクトをビルドするには、プロジェクトディレクトリに移動し、次のコマンドを実行します。

$ mvn package

ビルドの際、テストの実行を意図的にスキップしたい場合は、次のように実行します。

$ mvn -DskipTests package
ビルド時にテストで失敗する場合は、プロジェクト内の次のファイル中の<vm:outbound-endpoint>をコメントアウトして再実行して下さい。
src/test/resources/helloapp-functional-test-config.xml
<mule>
  ...
  <!--
    TODO: You can define a test configuration here then from the HelloTestCase you can fire events into
    Mule (using the MuleClient) and then assert the results.
    -->
  <flow name="main">
    <vm:inbound-endpoint path="in" exchange-pattern="request-response"/>
    <!-- TODO add your service component here. This can also be a Spring bean using <spring-object bean="name"/> -->
    <test:component appendString=" Received"/>
    
    <vm:outbound-endpoint path="out"/><!-- ここをコメントアウトする -->
  </flow>
</mule>
ツールのbugっぽいが、実際にはこのファイルをそのまま使うことはまずないと思われるので問題は無いハズ・・・。雰囲気だけ味わって下さい ^^;

Muleアプリケーションのデプロイ

プロジェクトのビルドを行うことで、targetディレクトリにZIPファイルが作成されます。Muleを開始している状態で、このZIPファイルを$MULE_HOME/appsディレクトリにコピーすることで、Muleアプリケーションをデプロイすることが出来ます。または、次のコマンドでもデプロイすることが出来ます。

$ mvn install
mvn installでデプロイするには、Mule ESBのインストール先のディレクトリを環境変数(MULE_HOME)としてあらかじめ定義しておく必要があります。


以前、Mule ESBのExample(mule-example-echo)をMule ESB上で実行する方法を紹介しましたが、いくつもあるExampleを1つ1つ実行するのは面倒です。今回はMule ESB内に標準で用意されているランチャーアプリケーションを紹介します。

ランチャーアプリケーションを実行する

Mule ESBを開始し、すべてのExampleを確認するには、次の手順でランチャーアプリケーションを実行します。

UNIX, Mac

$ <Mule Installation Directory>/bin/mule_examples

Windows

<Mule Installation Directory>\bin\mule_examples.bat

Exampleのデプロイが全て完了すると標準Webブラウザでランチャーアプリケーション(http://localhost:18082/examples/)が表示されます。

ランチャーアプリケーションの説明

Webブラウザからhttp://localhost:18082/examples/へアクセスするとランチャーアプリケーションにアクセスすることが出来ます。丁度、画面の左側にExampleの一覧があり、その一覧の中からExampleを選択することでそれぞれのExampleの確認が出来ます。

Example Launcherの起動画面

また選択したExample毎に次の3つを確認することが出来ます。

Overview

Exampleの概要を確認することが出来ます。

Example Launcher-Overview

Source

Exampleのソース(Mule ESBの定義ファイル)の内容を確認することが出来ます。

Example Launcher-Source

Run it

Exampleを実際に実行して動作を確認することが出来ます。

Example Launcher - Run it

Exampleのアンデプロイ

一度、Mule ESBにアプリケーションをデプロイするとMule ESBを開始する度にアプリケーションは実行され続けます。ランチャーアプリケーションは全てのExampleをMule ESBにデプロイするので、確認が終わると必要に応じてアンデプロイします。Mule ESBでは、アプリケーションのデプロイが成功するとアプリケーション毎のアンカーファイル(*-anchor.txt)を作成します。Mule ESBが開始している状態で、アンカーファイルを削除するとアプリケーションのアンデプロイを行うことが出来ます。

次の手順で、ランチャーアプリケーションでデプロイしたアプリケーションを全てアンデプロイすることが出来ます。

UNIX, Mac

$ rm <Mule Installation Directory>/apps/mule-example-*-anchor.txt

Windows

del <Mule Installation Directory>\apps\mule-example-*-anchor.txt

Mule ESBの停止

開始したMule ESBを停止するには、次の手順で行います。

UNIX, Mac

$ <Mule Installation Directory>/bin/mule stop

Windows

<Mule Installation Directory>\bin\mule.bat stop


EclipseにMule IDEをインストールすることで、Eclipse上で次の事が可能になり、Mule ESBを利用した開発が容易になります。

  • EclipseのMule Projectの作成
  • MuleのサンプルをMule Project内に取り込む
  • Mule設定ファイルの編集
  • MuleバージョンをMule Project毎に指定可能
  • Eclipse上からMule serverを起動し、Mule Projectを実行可能
  • Eclipse上からMule Projectをデバッグ可能

Mule IDEの導入環境

Mule IDEをインストールするには、次の環境を用意する必要があります。

  • Eclipse 3.4 (Ganymede) 以上
  • Java 5 以上
  • Mule 2.1 以上

今回は、これらの環境(筆者環境はHelios)が事前にインストールされていることを前提にMule IDEのインストール手順を説明します。

...continue reading Mule IDEをインストールする


最近、Mule ESBを仕事で使いそうなので、Mule ESBについて調べたことをメモとして残します。

Mule ESB

Mule ESBは、ESB(Enterprise Service Bus)と呼ばれるシステム間連携するためのミドルウェアの1つです。現在は、米Mule Soft社がサポートしており、商用向けのEnterprise EditionとオープンソースのCommunity Edtionが存在します。


入手先

最新のCommunity Editionをダウンロードすることにします。


インストール

ダウンロードしたファイルを任意の場所に解凍します。ここでは、~/local/に解凍します。
解凍後、インストール先の情報を環境変数に追加します。

export MULE_HOME=~/local/mule-standalone-3.1.1
export PATH=$PATH:$MULE_HOME/bin

とりあえずMule ESBを動かしてみる

ターミナルを起動し、インストールしたMule ESBのbinフォルダまで移動し、Mule ESBをスタンドアロンモードで開始します。Mule ESBの開始方法は他にも存在しますが、また別の機会に改めて説明することにします。

$ cd ~/local/mule-standalone-3.1.1/bin
$ ./mule

Mule ESBが開始したら、Mule ESBのexamples/echoフォルダのmule-example-echo-3.1.1.zipをMule ESBのappフォルダにコピーします。Mule ESBは、appフォルダを監視していおり、ファイルが置かれるとMuleのアプリケーションと判断し、自動的に展開/起動します。

では、早速mule-example-echoの動作確認を行いましょう。ブラウザを起動して http://localhost:65082/services/EchoUMO/echo/text/helloにアクセスしてみましょう。
ブラウザに、「hello」というテキストが表示されていれば、Mule ESBは正しく動作しています。

次に先ほどアクセスしたURLの最後の「hello」を何か適当な文字に置き換えてアクセスしてみましょう。おそらく置き換えた文字がブラウザに表示されるはずです。
既にご想像のようにmule-example-echoは、http://localhost:65082/services/EchoUMO/echo/text/の後に追加した文字をそのまま返す単純なWeb Serviceなのです。

ブラウザのソースを表示するとわかりますが、実際は次のようなXMLが返されています。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:echoResponse xmlns:ns2="http://echo.example.mule.org/"><text>hello</text></ns2:echoResponse></soap:Body></soap:Envelope>

Web Serviceであるということは、WSDLも存在します。 http://localhost:65082/services/EchoUMO/echo/text?wsdlにアクセスすることで、このサービスのWSDLを取得することが出来ます。