ESB Mule XML設定ファイルを使って、SpringFrameworkコンテキストからESB Muleを使えるようにできます。即ち、ビーン定義をしなくてもSpringFrameworkを使えば複数のESB Muleインスタンスを繋ぐことができます。ビーンを定時は保守が難しいし、定義するのにも時間も掛かります。SpringFrameworkを使うと、ESB Muleを特定したドメインのESB Mule XMLで定義する利点もあります。
SpringFrameworkコンテキストとESB Mule XMLを使ってESB Muleを設定するには、ESB Mule XML設定ファイルを SpringConfigurationBuilder に引渡します。
SpringConfigurationBuilder builder = new SpringConfigurationBuilder();
UMOManager manager = builder.configure("mule-config.xml");
これ自体はそんなに便利ではありませんが、SpringFrameworkビーンとESB Mule XMLを組み合わせてSpringFrameworkの高度な接続機能を使うことができます。例えば、ファクトリ・メソッドを使ってESB Muleコンポーネントのプロパティを設定したい場合は、SpringFrameworkの設定から行うことができます。
<mule-descriptor name="test" implementation="testObject">
<properties>
<bean name="bar" class="org.foo.BarFactory" factory-method="createBar">
<constructor-arg index="0">
<value>cocktail</value>
</constructor-arg>
</bean>
</properties>
</mule-descriptor>
SpringFramework XMLとESB Mule XMLと衝突する要素名もあります。回避するためにSpringFrameworkの要素をESB Mule XML設定で使う場合は要素名を spring- で始めます。次の表は影響するタグ一覧です。
| SpringFramework 要素 |
ESB Mule XNL |
| <property ...> |
<spring-property ...> |
| <map> |
<spring-map> |
| <list> |
<spring-list> |
| <entry> |
<spring-entry> |
例えば、Springビーン・プロパティをJMSコネクタに追加するには以下のように設定します:
<connector name="jmsconnector" className"org.mule.providers.jms.JmsConnector">
<properties>
<spring-property name="jndiContext">
<ref local="myJndicontext"/>
</spring-property>
<bean name="connectionFactory" class="org.foo.jms.provider.ConnectionFactory"/>
<property name=jndiDestinations" value="true"/>
</properties>
</connector>
Springの要素を使う場合は、SpringFrameworkが提供する全ての要素を使うことができます。上はJmsConnectorに jndiContext, connectionFactory_と _jndiDestinations プロパティを定義します。
ESB Mule XML設定(上のように)にビーンを使いたい場合は、設定ファイルに次のDOCTYPE宣言を記述します:
Spring設定ビルダはDOCTYPEを参照してどのように設定ファイルを読み込むかを決めます。ESB Mule設定ファイルはSpringコンテキストに読み込まれる前に、SpringビーンXMLに変換されます。
SpringConfigurationBuilder を使う場合は、以下のDOCTYPE宣言が以下のDTDを使っていれば、任意の数の設定ファイルを使うことができます。
| DTD |
タイプ |
| mule-configuration.dtd |
標準のESB Mule XML設定ファイル。Springビーン定義な無し。 |
| mule-spring-configuration.dtd |
ESB Mule XML設定とSpring XMLの組み合わせ。 |
| spring-beans.dtd |
Springビーン設定のみ。 |
3つのXML設定ファイルが異なるDTDで定義された設定な場合は、 SpringConfigurationBuilder を使って全設定ファイルを読み込むことができます。各ファイルはクラスパス又はファイル・システムにあることを前提とします。
SpringConfigurationBuilder builder = new SpringConfigurationBuilder();
UMOManager manager = builder.configure("spring-beans.xml,mule-configuration.xml,
mule-spring-configuration.xml);