Access Keys:
Skip to content (Access Key - 0)

ESB MuleはJavaSpace環境と接続するためにGigaSpacesを使います。
GigaSpacesは拡張性が高いスペース技術であり、無償のコミュニティ版が提供されています。

ESB Muleはスペースのイベントを購買する事と、スペースへイベントを発行する事ができます。例えば、以下の設定を行うとスペースのオブジェクト全てを購買し、結果オブジェクトをJMSキューに送ります。

<mule-descriptor name="unprocessedOrders" implementation="com.foo.ProcessingComponent">
    <inbound-router>
        <endpoint address="gs:java://localhost/mule-space_container/mule-space?schema=cache"/>
    </inbound-router>

    <outbound-router>
        <router className="org.mule.routing.outbound.OutboundPassThroughRouter">
            <endpoint address="jms://processed"/>
        </router>
    </outbound-router>
</mule-descriptor>

購買エンドポイントのアドレスに gs: が含まれていることに注目してください。これはスペースのレファレンスを取得するのと登録を行うために、処理するURLをGigaSpacesへ送ることを意味しています。

次のURL、

java://localhost/mule-space_container/mule-space?schema=cache

はローカル・スペース(メモリ)を参照するためのGigaSpaces URLです。リモートGigaSpacesスペースに接続するにはRMIのような他プロトコルを使います:

gs:rmi://localhost:10096/container1/space1

又は、r

gs:jini://192.168.1.2/myContainer/JavaSpaces

GigaSpacesのへの接続やスペースの設定の詳細に付いては、資料を参照してください。

テンプレートの使い方

上の例はスペース内の全てをイベントを購買します。ただし、JavaSpaceはテンプレートを使って受信するイベントを選択します。ESB Muleのフィルタでそのテンプレートを定義することができます。

<mule-descriptor name="unprocessedOrders" implementation="com.foo.ProcessingComponent">
    <inbound-router>
        <endpoint address="gs:java://localhost/mule-space_container/mule-space?schema=cache">
            <filter className="org.mule.providers.gs.filters.JavaSpaceTemplateFilter" expectedType="com.foo.Order" >
                <properties>
                   <map name="fields">
                      <property name="processed" value="false"/>
                   </map>
                </properties>
            </filter>
        </endpoint>
    </inbound-router>

    <outbound-router>
        <router className="org.mule.routing.outbound.OutboundPassThroughRouter">
            <endpoint address="jms://processed"/>
        </router>
    </outbound-router>
</mule-descriptor>

上の例は、Orderオブジェクトの processed プロパティが false かつ com.foo.Order 型のイベントを受信するフィルタを設定です。

com.foo.Order オブジェクトはJavaBeanの仕様ではなく、JavaSpacesのオブジェクト仕様に準拠していることに注意してください。即ち、Orderオブジェクトは以下のように定義されます:

public class Order implements Entry {

    public String orderId;
    public Boolean processed = Boolean.FALSE;


    public String toString(){
        return "Order{id=" + orderId + ", processed=" + processed.booleanValue() + "}";
    }
}

カプセル化を違反したくない開発者は(自分を含めて)、エンドポイントにOrderオブジェクトをJavaBeanのOrderオブジェクトに変換するトランスフォーマを定義すか、JavaBeansをJavaSpaceオブジェクトに見えるようにするJavaBeanプロキシ・アダプタを作成することができます。これに付いては読者にお任せします。

全てのオブジェクトはObjectでなければなりません。Javaの基本データ型は使えません。

Adaptavist Theme Builder (3.3.2-conf2.10) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license