コマンドラインの呼び出し:
$ 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 にアップロードするために必要な要素が含まれるようにファイルが変更されます。
デフォルトでは、Exchange URL は本番環境に設定されます。
<groupId>{orgId}</groupId>
<properties>
<exchange.url>https://maven.anypoint.mulesoft.com/api/v1/organizations/{orgId}/maven</exchange.url>
</properties>
EU バージョンの URL の場合、移行後に URL を手動で設定する必要があります。
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 要素の次の型が含まれます。
| 型 |
状況コード |
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}')]
|