ESB MuleはJNDI, EJB, SpringFramework, Pico, Plexus, HiveMind等のような外部コンテナ及びネーミング・サービスを利用・管理することができます。
対応したコンテナ
- [JNDIコンテナ] - 一つ以上のJNDIコンテンツからオブジェクトを参照する。
- [EJBセッション・ビーン] - EJBセッション・ビーンをESB Muleコンポーネントとして管理する。
コンテナの設定
<container-context>要素を使って、一つのESB Muleインスタンスに0以上のコンテナを設定することができます。
<container-context name="jndi" className="org.mule.impl.container.JndiContainerContext">
<properties>
<property name="java.naming.factory.initial"
value="org.foo.jndi.InitialContextFactory"/>
</properties>
</container-context>
以上でJNDIコンテナが設定されます。デフォルトでは、ESB Muleはコンテナの設定順にオブジェクトを検索します。
name 属性に注目してください。これは任意の設定ですが、設定するとコンテナ・プロパティを設定する場合に、特定のコンテナを参照することをできるようになります(下を参照)。コンテナ毎にデフォルト名があります。例:「jndi」, 「ejb」, 「spring」, 「pico」,「plexus」。
name 属性を設定する必要があるのは、同じ名前のオブジェクトを持つ2つのコンテナがあって区別する必要がある場合です。
コンテナ・プロパティの設定
コンテナ・オブジェクトの管理
オブジェクト・コンテナに構成されたオブジェクトをESB Muleサービスにすることができます。コンテナ・オブジェクトをESB Muleサービスとして公開するには、<mule-descriptor>要素の implmenetation 属性を検索するオブジェクト名に設定します。
任意に container 属性を指定して、オブジェクトをロードするコンテナを指定することができます。
<mule-descriptor name="MyComponent" implementation="myJndiObject" container="jndi">
....
</mule-descriptor>
コンテナ・プロパティ
ESB MuleのXML設定ファイルで<properties>要素があるオブジェクトは、プロパティとしてコンテナのオブジェクトを参照することができます。それらは、Ioc又はSpringFramework, JNDI, EJBのようなコンテナから取得したプロパティでうs。
<properties>
<container-property name="testProperty" reference="testBean" required="true" container="jndi"/>
</properties>
| 属性 |
説明 |
| name |
ビーン・プロパティ名を指定。オブジェクトに setTestProperty(..) メソッドと getTestProperty() メソッドがある場合は、プロパティ名は testProperty. です。 |
| reference |
コンテナでのオブジェクトの参照名(reference name)。 |
| required |
コンテナに参照されるオブジェクトが無い場合は例外を投げるか。デフォルトはtrueです(投げる)。 |
| container |
オブジェクトを指定されたコンテナのみで検索ようにする場合にコンテナ名を指定します。指定がない場合はESB Muleは全てのコンテナを設定された記述順に検索します。 |