Skip to content

Latest commit

 

History

History
138 lines (77 loc) · 8.45 KB

migrate-weblogic-to-wildfly-on-azure-kubernetes-service.md

File metadata and controls

138 lines (77 loc) · 8.45 KB
title description author ms.author ms.topic ms.date ms.custom recommendations
Migrate WebLogic Server apps to WildFly on Azure Kubernetes Service
Learn what you should be aware of to migrate an existing WebLogic Server application to run on WildFly in an Azure Kubernetes Service container.
KarlErickson
manriem
how-to
06/03/2022
devx-track-java, devx-track-azurecli, kr2b-contr-experiment, migration-java, devx-track-extended-java
false

Migrate WebLogic Server applications to WildFly on Azure Kubernetes Service

This guide describes what you should be aware of when you want to migrate an existing WebLogic Server application to run on WildFly in an Azure Kubernetes Service container.

Pre-migration

To ensure a successful migration, before you start, complete the assessment and inventory steps described in the following sections.

If you can't meet the pre-migration requirements, see the companion migration guide:

[!INCLUDE inventory-server-capacity-aks]

[!INCLUDE inventory-all-secrets]

[!INCLUDE inventory-all-certificates]

[!INCLUDE inventory-jndi-resources]

Determine whether session replication is used

If your application relies on session replication, with or without Oracle Coherence*Web, you have two options:

  • Refactor your application to use a database for session management.
  • Refactor your application to externalize the session to Azure Redis Service. For more information, see Azure Cache for Redis.

[!INCLUDE document-datasources]

[!INCLUDE determine-whether-weblogic-has-been-customized]

[!INCLUDE determine-whether-a-connection-to-on-premises-is-needed]

[!INCLUDE determine-whether-jms-queues-or-topics-are-in-use]

[!INCLUDE determine-whether-you-are-using-your-own-custom-created-shared-java-ee-libraries]

[!INCLUDE determine-whether-osgi-bundles-are-used]

[!INCLUDE determine-whether-your-application-contains-os-specific-code]

[!INCLUDE determine-whether-oracle-service-bus-is-in-use]

[!INCLUDE determine-whether-your-application-is-composed-of-multiple-wars]

[!INCLUDE determine-whether-your-application-is-packaged-as-an-ear]

Note

If you want to be able to scale each of your web applications independently for better use of your Azure Kubernetes Service resources, you should break up the EAR into separate web applications.

[!INCLUDE identify-all-outside-processes-and-daemons-running-on-the-production-servers]

[!INCLUDE validate-that-the-supported-java-version-works-correctly-wildfly]

[!INCLUDE determine-whether-your-application-relies-on-scheduled-jobs]

Determine whether WebLogic Scripting Tool is used

If you currently use the WebLogic Scripting Tool (WLST) to perform the deployment, you'll need to assess what it's doing. If WLST is changing any (runtime) parameters of your application as part of the deployment, make sure those parameters conform to one of the following options:

  • The parameters are externalized as app settings.
  • The parameters are embedded in your application.
  • The parameters are using the JBoss CLI during deployment.

If WLST is doing more than what is mentioned above, you'll have some extra work to do during migration.

Determine whether your application uses WebLogic-specific APIs

If your application uses WebLogic-specific APIs, you'll need to refactor it to remove those dependencies. For example, if you have used a class mentioned in the Java API Reference for Oracle WebLogic Server, you have used a WebLogic-specific API in your application. You would need to refactor to remove the reference.

[!INCLUDE determine-whether-your-application-uses-entity-beans]

[!INCLUDE determine-whether-the-java-ee-application-client-feature-is-in-use-aks]

Determine whether a deployment plan was used

If your app was deployed using a deployment plan, assess what the deployment plan is doing. If the deployment plan is a straight deploy, then you'll be able to deploy your web application without any changes. If the deployment plan is more elaborate, determine whether you can use the JBoss CLI to properly configure your application as part of the deployment. If it isn't possible to use the JBoss CLI, refactor your application in such a way that a deployment plan is no longer needed.

[!INCLUDE determine-whether-ejb-timers-are-in-use]

Determine whether and how the file system is used

Any usage of the file system on the application server requires reconfiguration or, in rare cases, architectural changes. The file system might be used by WebLogic shared modules or by your application code. You might identify some or all of the scenarios described in the following sections.

[!INCLUDE static-content]

[!INCLUDE dynamic-or-internal-content-aks]

Determine whether JCA connectors are used

If your application uses JCA connectors, you'll have to validate that the JCA connector can be used on WildFly. If the JCA implementation is tied to WebLogic, you'll have to refactor your application to remove that dependency. If it can be used, then you'll need to add the JARs to the server classpath and put the necessary configuration files in the correct location in the WildFly server directories for it to be available.

[!INCLUDE determine-whether-your-application-uses-a-resource-adapter]

[!INCLUDE determine-whether-jaas-is-in-use]

Determine whether WebLogic clustering is used

Most likely, you've deployed your application on multiple WebLogic servers to achieve high availability. Azure Kubernetes Service is capable of scaling, but if you used the WebLogic Cluster API, you need to refactor your code to eliminate the use of that API.

[!INCLUDE perform-in-place-testing]

Migration

[!INCLUDE provision-azure-container-registry-and-azure-kubernetes-service]

[!INCLUDE create-a-docker-image-for-wildfly]

[!INCLUDE build-and-push-the-docker-image-to-azure-container-registry]

[!INCLUDE provision-a-public-ip-address]

[!INCLUDE deploy-to-aks]

Configure persistent storage

If your application requires non-volatile storage, configure one or more Persistent Volumes.

[!INCLUDE migrate-scheduled-jobs-aks]

Post-migration

Now that you've migrated your application to Azure Kubernetes Service, you should verify that it works as you expect. After you do that, see the following recommendations to make your application more cloud-native.

[!INCLUDE recommendations-wildfly-on-aks]