※ 本記事は、David Cabelusによる”Automated Upgrades for your Oracle WebLogic Server 14.1.2 Applications“を翻訳したものです。
2025年5月13日

Oracle WebLogic Serverのお客様は、多数のアプリケーションを本番環境で稼働させる傾向があり、そのアプリケーションはお客様のビジネスにとって重要である傾向があります。アプリケーションのアップグレードを計画する際、お客様は、必要な時間を最小限に抑え、人的エラーを最小限に抑え、アップグレードのコストを削減するために、できるだけ多くのアップグレードを自動化することを検討します。分散クラウド導入の複雑さが増し、潜在的なセキュリティ脆弱性が増す中、アップグレードの頻度が高まります。この要素(大量のアプリケーション、複雑なデプロイメント、セキュリティ脆弱性の可能性の増大、頻繁な更新の必要性)の組合せにより、アプリケーション・アップグレードのコストとリスクを軽減する方法を模索することになります。
幸いなことに、アプリケーション・アップグレードの自動化ニーズを満たすために、アプリケーション・メンテナンス・ツールが進化しました。このような自動化ツールの1つはOpenRewriteです。WebLogicチームは、OpenRewriteを活用し、OpenRewriteレシピを提供して、アプリケーションのアップグレード・プロセスを自動化しています。詳細は、次をお読みください。
背景
OpenRewriteは、開発者が多数のアプリケーションを一括または同時にインテリジェントに更新できるようにする、コミュニティ主導のオープンソース・プロジェクトです。OpenRewriteは、一般的なアプリケーションの移行、セキュリティ修正およびスタイリッシュな一貫性タスクのために、事前パッケージ済のオープン・ソースのリファクタ・レシピを実行する自動リファクタリング・エンジンを提供します。新しいWebLogic Serverバージョンおよび関連するJDKバージョンにアップグレードする際に必要な変更の種類に最適です。
その裏で、OpenRewriteリファクタリング・エンジンはかなり進化しています。アプリケーション・コードに変更を加える前に、OpenRewriteはアプリケーションのLossless Semantic Tree (LST)表現を作成します。LSTは、クラス、メソッド、文、呼出し、変数などの再帰的な構造を含む、コードのすべての詳細な側面を表します。また、コードの書式設定と空白も保持されます。LSTは、抽象構文ツリー(AST)よりも優れています。これは、アプリケーションを表現し、正確な変換を行うために必要なすべての詳細を取得するためです。詳細は「Lossless Semantic Trees」をご覧ください。
次に、OpenRewriteは、ソース・コードで直接ではなく、LSTで変換を行います。リファクタリング・エンジンはレシピを適用して、LST内の構造を検索および変更します。レシピを1つのスタックにグループ化できます。OpenRewriteは、これらの各レシピを順番に適用し、レシピの複数のパスを実行して、後で実行されるレシピの結果を変更することもできます。
すべての変換が完了すると、OpenRewriteはLSTを使用して元のソース・ファイルでソース・コードを再生成し、書式設定を維持しながら変換を適用します。
このレベルのインテリジェントな自動化により、プロセスを拡張できます。OpenRewriteを使用して一貫して正確な変換を行うことで、多くのリポジトリに対してレシピを実行できます。
OpenRewriteに依存しているのは私たちだけではありません。多くの企業やプロジェクトも同じことをしています。OpenRewriteのレシピ・カタログをご覧ください。
rewrite-weblogicレシピ
WebLogic Server 14.1.2のリリースでは、WebLogicチームは、アプリケーション・アップグレード・プロセスを自動化するためのOpenRewriteレシピを提供することが役立つと考えていました。これらのレシピは、WebLogicがWebLogicドメインをアップグレードするために提供する自動化ツールを補完します。
前述のように、レシピをグループ化して特定の結果を達成できます。実際、ベスト・プラクティスは、レシピで特定のタイプの変更を処理することです。この演習では、変換目標を達成するために柔軟に結合できるレシピのライブラリを使用できます。このベスト・プラクティスに従って、WebLogic固有の変換に集中できるようにrewrite-weblogicレシピを実行しました。また、より一般的なJava変換については、OpenRewriteコミュニティの既存のレシピに依存できます。
特に、WebLogic Server 14.1.2アプリケーションのアップグレードでは、コンポジット・レシピ(複数のレシピを1つのユニットバンドルするレシピ) UpgradeTo1412 が提供されました。このコンポジット・レシピには、次の埋込みレシピが含まれています:
- UpdateBuildToWebLogic1412
- CheckAndCommentOutDeprecations1412
- FacesMigrationToJakartaFaces2x
- MigrateWebLogicSchemasTo1412
- WebLogic1412JavaXmlBindMitigation
これらのレシピは、アプリケーションをWebLogic Server 14.1.2にアップグレードするために必要な変更を提供します。これらのレシピでは、JDKに必要な変更は処理されません。これらの変更については、前述したOracle提供のレシピと、アプリケーションをJDK 17またはJDK 21で実行するようにアップグレードするコミュニティ提供のレシピを組み合せて使用することをお薦めします:
- UpgradeToJava17
-あるいは- - UpgradeToJava21
前述のすべてのレシピを実行するには、GradleまたはMavenを使用してプロセスを駆動します。たとえば、Mavenを使用すると、プロジェクトのルート・フォルダから次のコマンドを実行できます:
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run \ -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:RELEASE,com.oracle.weblogic.rewrite:rewrite-weblogic:LATEST \ -Drewrite.activeRecipes=org.openrewrite.java.migrate.UpgradeToJava21,com.oracle.weblogic.rewrite.UpgradeTo1412
先に進む前に、いくつかの重要な点があります:
- サードパーティ・ライブラリのアップグレードには、追加のレシピが必要です。前述のレシピは、WebLogicおよびJDKのアップグレード・ニーズに対応していますが、アプリケーションに必要なその他のアップグレードには対応していません。
- WebLogicアップグレード・レシピは、JDKレシピの後に実行する必要があります。UpgradeTo1412レシピは、JDKアップグレード・レシピの後にクリーンアップ作業を行います。JDKのアップグレード前に実行した場合、そのクリーンアップは行われません。
WebLogic Cafeチュートリアル
rewrite-weblogicレシピにちょっと試したい場合は、githubの「WebLogic CafeをWLS 14.1.2に移行」チュートリアルを参照してください。
OracleWebLogic YouTubeチャネルにチュートリアルの記録もあります。
取組みと次のステップ
WebLogicアプリケーションのアップグレードが大幅に簡単になりました。Oracle WebLogic Serverの新しいOpenRewriteレシピを使用すると、必要な更新を手動で検索し、変更を手動で行うのではなく、アプリケーションのアップグレードを自動化できます。
ぜひ、自分のアプリで試してみてください! 詳細は、https://github.com/oracle/rewrite-recipes/tree/main/rewrite-weblogic を参照してください。ご質問やご不明な点がございましたら、Slackでご連絡ください。当社のチャネルに参加するには、このサイトにアクセスして招待を受けてください。招待メールには、Slackワークスペースへのアクセス方法の詳細が記載されています。ログインしたら、#wls-app-upgrade-openrewrite に移動して「Hello!」と言ってください。
