共有リソース

Mule をオンプレミスにデプロイする場合は、デフォルトのエラーハンドラ、共有プロパティ、スケジューラプール、コネクタ設定などのグローバル設定を定義して、同じドメインにデプロイされたすべてのアプリケーションで共有できます。これを行うには、Mule ドメインを作成し、各アプリケーションからそのドメインを参照します。そうすることで、その Mule ドメインに関連付けられた各アプリケーションがドメイン内の共有リソースにアクセスできるようになります。
Mule アプリケーションは、一度に 1 つのドメインにしか関連付けることができませんので注意してください。

共有リソースにより、同じコネクタ設定セットを使用して、複数の開発チームが並行して作業を行うことができるため、チームは次のことが可能になります。

  • ドメイン内の複数のサービスを同じポートから公開できます。

  • 永続的なストレージへの接続を共有できます。

  • きちんと定義されたインターフェースを通して Mule アプリケーション間でサービスを共有できます。

  • 設定を 1 箇所のみで行うため、変更があっても Mule アプリケーション間の一貫性を保証できます。

メタデータを共有する場合は、Mule ドメインプロジェクトを Anypoint Studio で開いたままにしておいてください。そうでないと、リンク先の Mule プロジェクトでメタデータを手動で入力しなければなりません。

前提条件

  • Anypoint Studio 7.x

  • Mule Runtime Engine 4.x

  • オンプレミスでの Mule Runtime Engine の実行

制限事項

フロー、サブフロー、またはメッセージプロセッサを共有リソースとして定義することはできません。ドメインでは、動作を共有することはできません。共有できるのはリソースのみです。

アーキテクチャ

Anypoint Studio の Mule ドメインプロジェクトには次の主要ファイルが含まれます。

ファイル名 説明

/src/main/mule/mule-domain-config.xml

共有リソース設定ファイル。ファイル名は mule-domain-config.xml​ でなければなりません。

pom.xml

連動関係ファイル記述子。ドメインプロジェクトに必要なプラグインが格納された Maven POM ファイルです。

/mule-artifact.json

ドメインアーチファクトの記述子。

Mule ドメインプロジェクトをデプロイ可能な JAR ファイルにパッケージ化すると、次のファイルが含まれます。

ファイル名 説明

mule-domain-config.xml

共有リソース設定ファイル。ファイル名は mule-domain-config.xml​ でなければなりません。

/repository

ドメインのすべての連動関係が登録された Maven に似たリポジトリ。

/META-INF/maven/groupId/artifactId/pom.xml

アーチファクトの Maven 記述子ファイル。

/META-INF/mule-artifact/classloader-model.json

連動関係の管理に使用する内部 Mule ファイル。

/META-INF/mule-artifact/mule-artifact.json

ドメインアーチファクトの記述子。

新規ドメインの作成

Anypoint Studio で新しいドメインを作成するには、次の手順を実行します。

  1. 上部のメニューバーで [File (ファイル)]​ > [New (新規)]​ > [Mule Domain Project (Mule ドメインプロジェクト)]​ を選択します。

    新規 + ドメイン
  2. 通常の Mule プロジェクトの作成時と同じ項目に値を入力します。

    作成 + 新規 + ドメイン
    • プロジェクト名を入力して Mule バージョンを選択します。

共有リソースの定義

​ドメインプロジェクト​を設定するには、mule-domain-config.xml​ ファイルで共有リソースを定義します。この設定ファイルでは複数のリソースを定義できます。Anypoint Studio では、このファイルをいくつかの方法で編集できます。

  • 設定ファイル: Mule アプリケーション用の XML 設定ファイルと同様の XML を使用します。例:

    <?xml version="1.0" encoding="UTF-8"?>
    <domain:mule-domain
            xmlns="http://www.mulesoft.org/schema/mule/core"
            xmlns:domain="http://www.mulesoft.org/schema/mule/ee/domain"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
            xsi:schemaLocation="
                   http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                   http://www.mulesoft.org/schema/mule/ee/domain http://www.mulesoft.org/schema/mule/ee/domain/current/mule-domain-ee.xsd">
    
        <!-- configure here resource to be shared within the domain -->
    
    </domain:mule-domain>
  • グローバル要素: このビューは、共有リソースを定義するためのグラフィカルインターフェースを提供します。

モジュールやコネクタの連動関係をドメインプロジェクトに追加して、共有リソースとして使用できます。

アプリケーションのドメインへの関連付け

Mule アプリケーションは、一度に 1 つのドメインにしか関連付けることができません。Studio を使用するか、プロジェクトの pom.xml​ ファイルを直接編集するかのどちらかの方法で、既存の Mule アプリケーションをドメインに関連付けることができます。ドメインの連動関係を設定していない場合、Mule アプリケーションでは default​ ドメインが使用されます。

Mule 4.2.2 以降のバージョンを使用する場合は、次の点を考慮してください。

  • バージョンではセマンティックバージョン設定が優先されます。
    たとえば、バージョンを 1.0.1 に設定した場合、バージョン 1.0.2 以降のドメインは機能しますが、バージョン 1.0.0 のドメインは機能しません。

  • 同じグループ ID、アーティファクト ID、バージョンを使用して異なるドメインがデプロイされると、pom.xml​ ファイル内の参照が曖昧になるおそれがあります。
    この問題を回避するには、Mule アプリケーションの mule-artifact.json​ ファイルでドメインフォルダの名前を追加します。

{
  "domain": "mymuledomain-1.0.1-mule-domain"
  ...
}

Studio を使用して Mule アプリケーションをドメインに関連付ける

Studio から Mule アプリケーションをドメインに関連付けるには、次の手順を実行します。

  1. [Project Explorer] または [Package Explorer] ビューで Mule アプリケーションを右クリックします。

  2. メニューが開きますので、[Properties (プロパティ)]​ をクリックします。

  3. [Properties (プロパティ)] で [Mule Project (Mule プロジェクト)]​ をクリックします。

  4. [Domain (ドメイン)]​ 項目でプロジェクトのドメインを選択します。

    割り当て + ドメイン

    ドメインを選択すると、プロジェクトの Mule Runtime Engine が自動的にドメインの Mule Runtime Engine に一致します。

これらの手順を完了したら、Studio にプロジェクトの pom.xml​ のドメインが含まれます。次に例を示します。

<dependencies>
  ...
  <dependency>
      <groupId>com.mycompany</groupId>
      <artifactId>mymuledomain</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <classifier>mule-domain</classifier>
      <scope>provided</scope>
  </dependency>
</dependencies>

Studio 外で Mule アプリケーションをドメインに関連付ける

Studio 外で Mule アプリケーションをドメインに関連付けるには、前の例で示しているように、ドメインの連動関係を pom.xml​ ファイルに追加します。

共有リソースの参照

次の mule-domain-config.xml​ の例では、HTTP リスナおよび HTTP 要求設定を共有リソースとして定義します。

<?xml version="1.0" encoding="UTF-8"?>
<mule-domain xmlns="http://www.mulesoft.org/schema/mule/domain"
             xmlns:core="http://www.mulesoft.org/schema/mule/core"
             xmlns:http="http://www.mulesoft.org/schema/mule/http"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                     http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
               http://www.mulesoft.org/schema/mule/domain http://www.mulesoft.org/schema/mule/domain/current/mule-domain.xsd">

    <http:listener-config name="HTTP_Listener_Configuration">
        <http:listener-connection host="0.0.0.0" port="8080"/>
    </http:listener-config>

    <http:request-config name="domainLevel">
        <http:request-connection host="localhost" port="9090"/>
    </http:request-config>

</mule-domain>

ドメインに関連付けられているすべての Mule アプリケーションは、プロジェクト自体の中でリソースを参照するのと同じように設定内でリソースを参照することによって共有リソースを利用できます。次の例では、HTTP リスナコネクタが HTTP_Listener_Configuration​ という名前の共有リソースを参照しています。

<mule>
   <flow name="httpService">
      <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
      <set-payload value="success" />
   </flow>
</mule>

Studio のビジュアルエディタでは、コネクタのプロパティエディタの [Connector Configuration (コネクタ設定)]​ 項目にあるドロップダウンリストから共有リソースを選択できます。

選択 + リソース

共有リソースとのデプロイ

デフォルトでは、ドメインに関連付けられた Mule アプリケーションまたは Mule アプリケーションに関連付けられたドメインをデプロイすると、Anypoint Studio で両方がデプロイされます。このデフォルト動作を変更するには、ドメインの実行の設定を変更します。同じドメインを共有していなくても、ワークスペース内の一連の Mule アプリケーションをデプロイすることもできます。

Mule ドメインプロジェクトは、Runtime Manager ではインストールできません。

Anypoint Studio からのデプロイ

Studio からドメインプロジェクトとそれに関連付けられた Mule アプリケーションをデプロイする手順は次のとおりです。

  1. 再生ボタンの隣にあるドロップダウンメニューを開き、[Run Configurations (設定の実行)]​ を選択します。

    実行 + 設定
  2. [General (一般)]​ タブを選択し、右側のナビゲーションメニューで現在選択されている Mule アプリケーションと常に一緒にデプロイしたいプロジェクトのボックスを選択します。

    実行 + 設定 + プロパティ

Anypoint Studio 外でのデプロイ

Studio 外で ドメインプロジェクトと Mule アプリケーションをスタンドアロン Mule Runtime Engine にデプロイする手順は次のとおりです。

  1. Studio で、[File (ファイル)]​ > [Export (エクスポート)]​ を選択します。

  2. [Mule]​ > [Anypoint Studio Project to Mule Deployable Archive (includes Studio metadata) (Anypoint Studio プロジェクトから Mule のデプロイ可能なアーカイブへ (Studio メタデータを含む))]​ を選択します。
    このプロセスによって、スタンドアロン Mule Runtime Engine にデプロイできる JAR ファイルが作成されます。

    mruntime export studio
  3. エクスポートされたドメインの JAR ファイルを MULE_HOME/domains​ にコピーします。

  4. デプロイする各 Mule アプリケーションとそれに関連付けられたドメインをエクスポートします。

  5. ドメインを参照する各 Mule アプリケーションのエクスポートされた JAR ファイルを MULE_HOME/apps​ フォルダにコピーします。

  6. コマンドコンソールから Mule を起動します。

    Mule が起動すると、Mule アプリケーションの起動前にすべてのドメインが完全に起動しているようにするため、Mule は先に MULE_HOME/domains​ フォルダで見つかったドメインをすべてデプロイしてから、次に MULE_HOME/apps​ フォルダで見つかった Mule アプリケーションをすべてデプロイします。

Mule Maven プラグインを使用したドメインのデプロイ

Mule Maven プラグインを使用してドメインをローカル Mule インスタンスにデプロイできます。 手順は、「ドメインのデプロイ」​を参照してください。

Was this article helpful?

💙 Thanks for your feedback!