API プロキシの移行

プロキシの移行の実行

プロキシの移行を実行するこの例では、Mule Migration Assistant (MMA) を使用します。 この手順では、ツールの​ 前提条件​​を満たしている必要があります。MMA の完全なユーザードキュメントについては、 「Migration to Mule 4 (Mule 4 への移行)」(GitHub)​ を参照してください。

プロキシを移行するための MMA コマンドは、Mule アプリケーションを移行するための標準の コマンドラインオプション (GitHub)​ を使用します。

コマンドラインの呼び出し:
$ java -jar mule-migration-assistant-runner-0.5.1.jar \
 -projectBasePath /Users/me/AnypointStudio/workspace-studio/my-mule3-proxy/ \
 -muleVersion 4.1.5 \
 -destinationProjectBasePath /Users/me/my-dir/my-migrated-proxy

MMA では、​-destinationProjectBasePath​ オプションを使用して移行したプロジェクトのディレクトリが作成されます。​my-migrated-proxy​ は、コマンドを呼び出す前には​存在しない​必要があります。すでに存在するフォルダーを指定すると、移行は次のようなエラーで失敗します。 ​Exception: Destination folder already exists. (例外: 宛先フォルダーがすでに存在しています。)

移行が正常に実行されると、次のようなメッセージが表示されます。

成功した移行
Executing migration...
...
========================================================
MIGRATION SUCCESS
========================================================
Total time: 11.335 s
Migration report:
/Users/me/my-dir/my-migrated-proxy/report/summary.html

移行が正常に完了すると、宛先フォルダーには次の内容が含まれます。

  • プロキシ POM ファイル。

  • Mule 移行レポート (GitHub)​ (​summary.html​) を含む ​report​ ディレクトリ。 このレポートで提供されるものと同じ情報は、プロキシ XML ファイルにコメントとして含まれています。

  • MMA コマンドで設定された ​-muleVersion​ 値と一致する ​minMuleVersion​ 値が設定された ​mule-artifact.json​ ファイル。

  • src​ ディレクトリ。移行したコンテンツが含まれます。

src​ ディレクトリには、​main​ および ​test​ ディレクトリが含まれます。​main​ 内では、​mule​ ディレクトリにプロキシ XML ファイルが含まれます。​mule​ ディレクトリと同じレベルで、移行したプロキシに必要な DataWeave ファイルまたはその他のファイル用の ​resources​ ディレクトリが作成されます。 アーティファクトを適切にデプロイするには、プロキシ XML で定義された設定ファイルが ​resources​ ディレクトリに存在する必要があります。​test​ ディレクトリには、テスト設定ファイルが含まれます。

移行に成功したら、​POM の移行​で説明されているように、POM ファイルを変更する必要があります。POM ファイルに適切な組織 ID が設定されたら、​mvn clean install​ を使用してコンパイルできます。コンパイルに成功した場合、​maven clean deploy​ を使用して移行したプロキシを Exchange にアップロードできます。カスタムアプリケーションのアップロードについての詳細は、 「Maven を使用した Exchange アセットのパブリッシュとデプロイ」​を参照してください。

POM の移行

POM ファイルの移行により、カスタムプロキシを Exchange にアップロードするために必要な要素が含まれるようにファイルが変更されます。

移行​​:

  • <groupId/>​ および ​<exchange.url/>​ 要素の ​{orgId}​ 値は、Anypoint Platform にある組織 ID に置き換えられます。

組織 ID を取得する方法についての詳細は、​「Exchange へのカスタムポリシーのアップロード」​を参照してください。

デフォルトでは、Exchange URL は本番環境に設定されます。

<groupId>{orgId}</groupId>

<properties>
 <exchange.url>https://maven.anypoint.mulesoft.com/api/v1/organizations/{orgId}/maven</exchange.url>
</properties>

EU バージョンの URL の場合、移行後に URL を手動で設定する必要があります。

  • EU の URL テンプレート: https://maven.eu1.anypoint.mulesoft.com/api/v1/organizations/{orgId}/maven

MMA がプロキシの POM ファイルを見つけられない場合、新しい POM ファイルが作成されます。このファイルでは、ポリシーの ​artifactId​ はプロキシアプリケーションのベースディレクトリの名前です。たとえば、​mytestproxy/src/main/app/proxy.xml​ 内のプロキシの場合、​artifactId​ は ​mytestproxy​ です。

連動関係およびプラグインバージョン

連動関係およびプラグインバージョンは MMA によってデフォルトで設定されており、必要に応じて手動で変更できます。

未移行の要素

いくつかの要素は、Mule 3 から Mule 4 に移行されません。

要素 理由

api-platform-gw:tags

Mule 4 では、API の自動作成は無効です。

api-platform-gw:description

Mule 4 では、API の自動作成は無効です。

これらの各要素では、子要素も削除されます。

一般的な移行の問題

移行中にプロキシファイルが見つからない場合、MMA は次のようなメッセージを出力します。

失敗した移行
Executing migration...
...
===============================================================================
MIGRATION FAILED
===============================================================================
Total time: 3.008 s
Exception: Cannot read mule project. Is it a Mule Studio project?
com.mulesoft.tools.migration.engine.exception.MigrationJobException: Cannot read mule project. Is it a Mule Studio project?
	at com.mulesoft.tools.migration.engine.project.MuleProjectFactory.getMuleProject(MuleProjectFactory.java:50)
	at com.mulesoft.tools.migration.engine.MigrationJob.generateSourceApplicationModel(MigrationJob.java:116)
	at com.mulesoft.tools.migration.engine.MigrationJob.execute(MigrationJob.java:80)
	at com.mulesoft.tools.migration.MigrationRunner.main(MigrationRunner.java:83)

===============================================================================

POM の移行の問題

MMA がプロキシの POM モデルを見つけられない場合、Mule 3 の既存の POM からモデルが生成されるか、Mule 3 POM がない場合はモデルが作成されます。MMA が既存の POM を使用している場合、不正な POM 定義が検出されると POM モデルの作成プロセスが失敗します。POM モデル障害に関する情報については、POM モデルの変更時の MMA ステップに関する前のエラーメッセージを確認する必要があります。

RAML プロキシの移行

RAML プロキシ要素は REST プロキシ要素に移行されます。

Mule 3 Mule 4

proxy:raml-proxy-config​。

rest-validator:config​。

proxy:raml​。

rest-validator:validate-request​。

apikit:mapping-exception-strategy​。

rest-validator:validate-request​ 要素を含むフロー内の ​on-error-continue​ 要素を使用する ​error-handler​。

error-handler​ 要素には、​on-error-continue​ 要素の次の型が含まれます。

Status Code

REST-VALIDATOR:BAD_REQUEST​

400

REST-VALIDATOR:RESOURCE_NOT_FOUND​

404

REST-VALIDATOR:METHOD_NOT_ALLOWED​

405

HTTP:TIMEOUT

504

Mule 3 要素に見つからない例外は、Mule Migration Assistant によってオートコンプリートされます。

WSDL プロキシの移行

WSDL プロキシの移行は、WSDL プロパティの属性値の移行で構成されます。Mule 3 では、ほとんどの値は属性値として定義された関数を使用して抽出されます。Mule 4 には同等のプロセスがないため、ほとんどのプロパティはデフォルト値に移行され、​service​ キーワードで始まる WSDL ファイルの値を使用して手動で設定する必要があります。

一部のプロパティは、よりわかりやすい方法で値を抽出するために名前が変更されています。次に例を示します。

Mule 3 Mule 4

![wsdl(p['wsdl.uri']).services[0].preferredPort.name]

${service.port}

![wsdl(p['wsdl.uri']).targetNamespace]

${service.namespace}

![wsdl(p['wsdl.uri']).services[0].name]

${service.name}

次のようなその他のプロパティは、MMA によって提供される WSDL 関数拡張の連動関係を使用する DataWeave 式に移行され、期待値を抽出します。

Mule 3 Mule 4

![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].port]

#[Wsdl::getPort('${wsdl.uri}','${service.name}','${service.port}')]

![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].host]

#[Wsdl::getHost('${wsdl.uri}','${service.name}','${service.port}')]

![wsdl(p['wsdl.uri']).services[0].preferredPort.addresses[0].path]

#[Wsdl::getPath('${wsdl.uri}','${service.name}','${service.port}')]