リソースのエクスポート

Mule アプリケーション、Mule ドメイン、Mule ポリシーには、プロパティファイル、DataWeave 変換ファイル、Java クラスなどの一連のリソースが含まれています。 デフォルトでは、これらのすべてのファイルは、それが定義されたアーティファクト内部のものであり、他のアーティファクトからはアクセスできません。たとえば、ドメインレベルで定義されたリソースが明示的にエクスポートされなければ、その共有ドメインに属するどのアプリケーション内からもそのリソースにアクセスできません。別の例として、Java モジュールで使用されることが想定されているアプリケーションからのクラスがあります。それらのクラスがエクスポートされなければ、Java モジュールはそれらにアクセスできません。

Java クラスのエクスポート方法

Java クラスをエクスポートするには、自分のアーティファクトの ​mule-artifact.json​ ファイルの ​exportedPackages​ 項目を使用して、これらのクラスを含む完全なパッケージをエクスポートします。クラスを個別にエクスポートすることはできません。

公開パッケージに名前を付ける場合は ​.api.​、非公開パッケージに名前を付ける場合は ​.internal.​ を使用します。

{
    "name": "MyApp",
    "minMuleVersion": "4.0.0",
    "classLoaderModelLoaderDescriptor": {
        "id": "mule",
        "attributes": {
            "exportedPackages": [
                "org.mule.myapp.api.customer",
                "org.mule.myapp.api.account"
            ]
        }
    }
}

この設定では、Java クラス内部での連動関係も自動的にエクスポートされます。

考慮事項

  • アプリケーションが機能するのに必要な最小限の数のパッケージのみをエクスポートしてください。

    そうすることで、アプリケーション内で使用する他のアーティファクト (モジュールやコネクタなど) と競合する可能性が低くなります。

  • エクスポートされたパッケージに Mule アプリケーションのコンポーネントからアクセスする必要がある場合は、共有ライブラリを設定してください。

    Mule で実装されているクラスローディング分離メカニズムのため、アプリケーションの連動関係が共有ライブラリとして設定されていない限り、コネクタやモジュールから連動関係にアクセスすることはできません。

リソースファイルのエクスポート方法

リソースをエクスポートするには、アーティファクトの ​mule-artifact.json​ ファイルの ​exportedResources​ 項目を使用します。

{
    "name": "MyApp",
    "minMuleVersion": "4.0.0",
    "classLoaderModelLoaderDescriptor": {
        "id": "mule",
        "attributes": {
            "exportedResources": [
                "/org/mule/myapp/customer-to-user.dwl",
                "/org/mule/myapp/beans.xml"
            ]
        }
    }
  }
}
同じメカニズムがすべてのアーティファクトに適用されます。これには、Mule SDK を使用して開発されたカスタム拡張を含みます。