title | description | author | ms.author | ms.topic | ms.date | ms.custom | recommendations |
---|---|---|---|---|---|---|---|
Migrate WebSphere applications to WildFly on Azure Kubernetes Service |
This guide describes what you should be aware of when you want to migrate an existing WebSphere application to run on WildFly in an Azure Kubernetes Service container. |
KarlErickson |
manriem |
conceptual |
2/28/2020 |
devx-track-java, devx-track-azurecli, migration-java, devx-track-extended-java |
false |
This guide describes what you should be aware of when you want to migrate an existing WebSphere application to run on WildFly in an Azure Kubernetes Service container.
To ensure a successful migration, before you start, complete the assessment and inventory steps described in the following sections.
[!INCLUDE inventory-server-capacity-aks]
Check all properties and configuration files on the production server(s) for any secrets and passwords. Be sure to check ibm-web-bnd.xml in your WARs. Configuration files that contain passwords or credentials may also be found inside your application.
[!INCLUDE inventory-all-certificates]
[!INCLUDE validate-that-the-supported-java-version-works-correctly-wildfly]
Inventory all JNDI resources. Some, such as JMS message brokers, may require migration or reconfiguration.
Inspect the file WEB-INF/ibm-web-bnd.xml and/or WEB-INF/web.xml.
If your application uses any databases, you need to capture the following information:
- What is the datasource name?
- What is the connection pool configuration?
- Where can I find the JDBC driver JAR file?
For more information, see Configuring database connectivity in the WebSphere documentation.
Any usage of the file system on the application server will require reconfiguration or, in rare cases, architectural changes. File system may be used by WebSphere modules or by your application code. You may identify some or all of the scenarios described in the following sections.
[!INCLUDE static-content]
[!INCLUDE dynamic-or-internal-content-aks]
[!INCLUDE determine-whether-your-application-relies-on-scheduled-jobs]
[!INCLUDE determine-whether-a-connection-to-on-premises-is-needed]
[!INCLUDE determine-whether-jms-queues-or-topics-are-in-use]
If your application uses WebSphere-specific APIs, you'll need to refactor it to remove those dependencies. For example, if you have used a class mentioned in the IBM WebSphere Application Server, Release 9.0 API Specification, you have used a WebSphere specific API in your application.
[!INCLUDE determine-whether-your-application-uses-entity-beans]
[!INCLUDE determine-whether-the-java-ee-application-client-feature-is-in-use-aks]
[!INCLUDE determine-whether-your-application-contains-os-specific-code]
[!INCLUDE determine-whether-ejb-timers-are-in-use]
If your application uses JCA connectors, you'll have to validate the JCA connector can be used on WildFly. If the JCA implementation is tied to WebSphere, 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-jaas-is-in-use]
[!INCLUDE determine-whether-your-application-uses-a-resource-adapter]
[!INCLUDE determine-whether-your-application-is-composed-of-multiple-wars]
If your application is packaged as an EAR file, be sure to examine the application.xml and application-bnd.xml files and capture their configurations.
Note
If you want to be able to scale each of your web applications independently for better use of your AKS resources you should break up the EAR into separate web applications.
[!INCLUDE identify-all-outside-processes-and-daemons-running-on-the-production-servers]
[!INCLUDE perform-in-place-testing]
[!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]
If your application requires non-volatile storage, configure one or more Persistent Volumes.
[!INCLUDE migrate-scheduled-jobs-aks]
Now that you have migrated your application to Azure Kubernetes Service, you should verify that it works as you expect. After you've done that, we have some recommendations for you that can make your application more cloud-native.
[!INCLUDE recommendations-wildfly-on-aks]