機能フラグのメカニズム

Mule Runtime Engine には機能フラグのメカニズムが組み込まれています。これを使用すると、必要な最小の Mule バージョンに基づいて Mule アプリケーションで Mule インスタンスの動作を変更することができます。この機能では、Mule アプリケーションが以降の Mule Runtime バージョンで引き続き動作できるために後方互換性が確保されます。一方、新しい Mule アプリケーションは、Mule インスタンスに実装された最新のバグ修正を活用することができます。

機能フラグのメカニズムは自動です。Mule インスタンスにデプロイされた Mule アプリケーションごとに、Mule は、Mule アプリケーションのアプリケーション記述子ファイル (​mule-artifact.json​) に設定されたアプリケーションの最小 Mule バージョンに基づいて有効または無効な機能を判断します。

デフォルトでは、以前の Mule バージョンで実行されている Mule アプリケーションとの後方互換性のない新機能またはバグ修正は Mule Runtime Engine によって無効化されます。ただし、各 Mule アプリケーション、または同じ Mule インスタンスで実行されるすべてのアプリケーションに設定される機能フラグを管理することができます。

Mule アプリケーションの機能フラグの設定

Mule アプリケーションの機能フラグを設定するには、アプリケーションの ​mule-artifact.json​ ファイルの ​minMuleVersion​ 値を変更します。この設定では、この特定のバージョンにリリースされたすべての機能とバグ修正を実装し、以降の Mule バージョンでデフォルトでアクティブになっている機能とバグ修正を無効化して、このアプリケーションを実行するように Mule インスタンスに指示します。

たとえば、Mule 4.5.0 で Mule アプリケーションを実行し、Mule 4.1.0 までのコア機能を変更しない機能のみを適用するように Mule インスタンスに指示できます。

mule-artifact.json​ ファイルの例
{
  "minMuleVersion": "4.1.0"
}

Mule インスタンスの機能フラグの設定

機能フラグを設定する代替方法として、システムプロパティを使用する方法があります。この場合、使用可能な各機能フラグを有効または無効にすることができます。ただし、システムプロパティを介して機能フラグを設定すると、変更が Mule インスタンスレベルで適用されるため、この Mule インスタンスにデプロイされたすべてのアプリケーションが、設定された機能フラグに従って動作します。

システムプロパティは他のデプロイメント対象では設定できないため、この設定はオンプレミスデプロイメントのみとの互換性があります。

たとえば、このインスタンスで実行されているすべてのアプリケーションで特定の機能を有効または無効にするように Mule 4.5.0 インスタンスを設定することができます。

wrapper.conf​ ファイルの例
…
wrapper.java.additional.999=-DHONOUR_RESERVED_PROPERTIES_PROPERTY=true
wrapper.java.additional.1000=-DCOMPUTE_CONNECTION_ERRORS_IN_STATS_PROPERTY=false

機能フラグリファレンス

次の表に、使用可能な機能フラグ、機能フラグの機能の説明、機能フラグが使用可能になった Mule バージョン、機能フラグをデフォルトで有効化する以前のマイナーバージョンリリース、変更が実装された課題 ID を示します。

機能フラグ 説明

mule.batch.fixed.aggregator.transaction.record.buffer

有効にした場合、固定サイズのアグリゲーターを使用する Batch Aggregator は、完全なブロックが処理されたときにのみコミットされます。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20210304

  • 4.2.2-20210304

次のバージョン以降にデフォルトで有効化

  • どの Mule バージョンでもデフォルトでは有効になりません

課題 ID

  • MULE-19218

mule.compute.connection.errors.in.stats

有効にした場合、接続エラーがアラートトリガーの一環として計算されます。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20210304

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • MULE-19020

mule.enable.default.errorhandler.not.rollback.incorrect.tx

有効にした場合、Runtime が追加したデフォルトのエラーハンドラーは、トランザクションが応答せずにロールバックが必要になっても、トランザクションをロールバックしません。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-20211227

  • 4.3.0-20211222

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-19919

mule.dw.remove_shadowed_implicit_inputs

有効にした場合、DataWeave は、ルートレベルで宣言されている名前と同じ名前の暗黙的な入力を削除します。

次のバージョン以降に使用可能

  • 4.4.0-20211026

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • DW-893

mule.enable.byteBuddy.objectCreation

有効にした場合、オブジェクトのファクトリーが CGLIB ではなく Byte Buddy で作成されます。

次のバージョン以降に使用可能

  • 4.4.0-20220321

  • 4.3.0-20220321

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • W-10672687

mule.enable.policy.isolation

有効にした場合、Mule は、ポリシーによってインポートされた拡張機能を、Mule アプリケーションによってインポートされた拡張機能とは完全に切り離して管理します。また、ポリシーの初期化の一環としてアプリケーションで宣言された明示的な設定の使用が検証により回避されます。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20210622

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • MULE-19226

mule.enable.profiling.service

有効にした場合、Runtime プロファイリング機能が使用できるようになります。

次のバージョン以降に使用可能

  • 4.4.0

次のバージョン以降にデフォルトで有効化

  • どの Mule バージョンでもデフォルトでは有効になりません。

課題 ID

  • MULE-19588

mule.entityResolver.failOnFirstError

有効にした場合、配置できないスキーマを宣言しているアプリケーションをデプロイすると、Mule XML DSL パーサーが失敗します。それ以外の場合、このようなスキーマのバインド先の名前空間もアプリケーションで使用していると、パーサーは失敗します。

次のバージョン以降に使用可能

  • 4.4.0

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • EE-7827

mule.force.runtime.profiling.consumers.enablement

有効にした場合、Runtime によって実装されたプロファイリングコンシューマーがデフォルトで有効になります。

次のバージョン以降に使用可能

  • 4.4.0-20220221

次のバージョン以降にデフォルトで有効化

  • どの Mule バージョンでもデフォルトでは有効になりません

課題 ID

  • MULE-19967

mule.dw.handle_splitter_exception

有効にした場合、DataWeave で内部例外を適切に処理しながらペイロードを分割するため、以降のシリアル化エラーが回避されます。

次のバージョン以降に使用可能

  • 4.4.0

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • DW-383

mule.honour.reserved.properties

有効にした場合、​app.name​ などの予約されたプロパティをグローバルプロパティで上書きできなくなります (上書きは無視されます)。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20220221

次のバージョン以降にデフォルトで有効化

  • 4.4.0

  • 4.3.0

課題 ID

  • MULE-17659

mule.honourErrorMappingsWhenPolicyAppliedOnOperation

有効にした場合、操作ポリシーのエラー解決が無視されます。そのため、ポリシーが適用されるプロセッサーのエラーマッピングが正常に設定されます。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-20220722

  • 4.3.0-20220725

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-11147961

mule.detailedCompositeRoutingExceptionLog

有効にした場合、AbstractForkJoinRouter ベースのプロセッサー (例: Parallel For Each ルーターや Scatter-Gather ルーター) は、失敗したルートの詳細なエラー情報を表示します。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-20220622

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-10965130

mule.parallelForeach.flattenMessage

有効にした場合、parallel-foreach スコープで反復処理する項目がメッセージ (結果オブジェクトを返す操作の出力など) であれば、foreach スコープと同じようにフラット化されます。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-20220221

  • 4.3.0-20220221

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-20067

mule.setVariable.WithNullValue

有効にした場合、変数の値が ​null​ であっても、Set Variable コンポーネントで変数が作成されます。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20210622

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • MULE-19443

mule.startExtensionComponentsWithArtifactClassloader

有効にした場合、拡張機能は、デプロイ可能なアーティファクト (アプリケーション、ポリシー、ドメイン) からエクスポートされたリソースのみを読み込むことができます。

次のバージョン以降に使用可能

  • 4.4.0

  • 4.3.0-20211026

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • MULE-19815

mule.transformer.toString.transformIteratorElements

有効にした場合、文字列に変換される管理されたカーソルイテレーターには、汎用値 ​org.mule.runtime.core.internal.streaming.object.-ManagedCursorIteratorProvider$ManagedCursorIterator@​ ではなく要素の表現が表示されます。

次のバージョン以降に使用可能

  • 4.4.0

次のバージョン以降にデフォルトで有効化

  • 4.4.0

課題 ID

  • MULE-19323

mule.suppress.mule.exceptions

有効にすると、エラー抑制が行われます。この機能により、Web Service Consumer Connector や Until Successful スコープなどのコンポーネントでその名前空間外のエラーが報告されなくなります。

Web Service Consumer での接続エラーのエラーログの抜粋の例 (HTTP:CONNECTIVITY が抑制されています):

Error type : WSC:INVALID_WSDL​
Caused by  : HTTP:CONNECTIVITY

抑制されたエラーは On Error ハンドラーでも照合できる根本原因として扱われます。

次のバージョン以降に使用可能

  • 4.4.0-20220922

次のバージョン以降にデフォルトで有効化

  • 4.4.0-20220922

課題 ID

  • W-11778765

mule.errorTypes.lax

有効にすると、参照されないエラーハンドラー/コンポーネントに対してもエラー種別検証が適用されます。

次のバージョン以降に使用可能

  • 4.4.0-20211227

次のバージョン以降にデフォルトで有効化

  • どの Mule バージョンでもデフォルトでは有効になりません。

課題 ID

  • MULE-19879

mule.support.native.library.dependencies

有効にした場合、アプリケーションがネイティブライブラリにアクセスすると、宣言されたネイティブライブラリの残りも読み込まれます。これにより、アクセスしたネイティブライブラリが別のネイティブライブラリに連動している場合に ​UnsatisfiedLinkError​ などのエラーを回避することができます。ライブラリは、​sharedLibraries​ 設定で連動関係の順序に従って宣言する必要があります。つまり、ライブラリ A がライブラリ B に連動する場合、A を最初に宣言する必要があります。ドメインでネイティブライブラリを宣言することもサポートされます。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-20230417

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-11855052

mule.rethrowExceptionsInIdempotentMessageValidator

有効にすると、​idempotent-message-validator​ のイベントを処理する際に一般的な ​MULE:DUPLICATE_MESSAGE​ をスローするのではなく、内部例外が再スローされます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-11529823

com.mulesoft.dw.xml_reader.honourMixedContentStructure

このプロパティが true に設定されている場合、DataWeave ではテキストを混在コンテンツと一緒に 1 つのテキスト項目にグループ化するのでなく、混在コンテンツ構造を保持します。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-11071481

ENFORCE_ERROR_TYPES_VALIDATION

有効にすると、参照されていないエラーハンドラー/コンポーネントに対してもエラー種別検証が適用されます。 この機能はシステムプロパティで設定できません。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-10619787

disable.attribute.parameter.whitespace.trimming

有効にすると、Mule では DSL で属性レベルで定義されたパラメーター値から空白を切り取ります。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-19803

disable.pojo.text.parameter.whitespace.trimming

有効にすると、Mule では DSL の POJO の CDATA テキストパラメーターから空白を切り取ります。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-20048

enforce.expression.validation

有効にすると、式検証が ​targetValue​ について適用され、リテラル値は許可されません。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-19987

enforce.dw.expression.validation

有効にすると、式検証がすべての DataWeave 式について適用されます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-19967

force.runtime.profiling.consumers.enablement

有効にした場合、Mule によって実装されたプロファイリングコンシューマーがデフォルトで有効になります。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-202202

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-19967

mule.disable.registryBootstrapOptionalEntries

有効にすると、​registry-bootstrap.properties​ のエントリの ​optional​ 属性が無視されます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-10736301

mule.disable.applyObjectProcessor

有効にすると、​SimpleRegistry​ に登録されるオブジェクトで ​org.mule.runtime.core.privileged.registry.ObjectProcessor​ の実装が適用されません。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • MULE-11737

mule.deployment.validateAppModelWithRegionClassloader

有効にすると、アプリケーションモデルがリージョンクラスローダーを使用して検証されます。無効にすると、アプリケーションクラスローダーを使用して検証されます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-10808757

mule.suppress.mule.exceptions

有効にすると、エラー抑制が行われます。これにより、たとえば、Web Service Consumer Connector や、対応する名前空間 (MULE や WSC) から常にエラーを報告する Until Successful スコープに影響します。抑制されたエラーは根本原因として扱われます。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-202210

次のバージョン以降にデフォルトで有効化

  • 4.5.0

  • 4.4.0-202210

  • 4.3.0-202210

課題 ID

  • W-11308645

mule.foreachRouterRejectsMapExpressions

有効にすると、コレクション式が ​java.util.Map​ に評価される場合、'foreach' ルーターによって ​IllegalArgumentException​ が生成されます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-12207110

mule.honour.insecure.tls.configuration

有効にすると、TrustStore の項目が設定されている場合であっても、非セキュアな TLS 設定が尊重されます。

次のバージョン以降に使用可能

  • 4.5.0

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-10822938

mule.transaction.sink.index

有効にすると、キーの一部としてインデックスを使用して不安定なシンクがキャッシュされます。シンクがすでに使用されている場合は新しいシンクが作成されます。

次のバージョン以降に使用可能

  • 4.4.0

次のバージョン以降にデフォルトで有効化

  • 4.0.0

  • 4.1.0

  • 4.2.0

  • 4.3.0

  • 4.4.0

  • 4.5.0

課題 ID

  • W-12128703

mule.enable.policy.context.parallel.scopes

有効にすると、新しい (ソース) ポリシーコンテキストが並列スコープの実行用に作成されます: ParallelForeach、ScatterGather、Async。

次のバージョン以降に使用可能

  • 4.5.0

  • 4.4.0-202306

次のバージョン以降にデフォルトで有効化

  • 4.5.0

課題 ID

  • W-13509911

mule.disableJmx.for.commons.pool2

有効にすると、MBeans は ​commons-pool2​ に登録されません。

次のバージョン以降に使用可能

  • 4.6.0

次のバージョン以降にデフォルトで有効化

  • 4.6.0

課題 ID

  • W-12422473