Migrera WebSphere-program till JBoss EAP på Azure App Service

Den här guiden beskriver vad du bör känna till när du vill migrera ett befintligt WebSphere-program som ska köras i Azure App Service med JBoss EAP.

Före migrering

För att säkerställa en lyckad migrering slutför du de utvärderings- och inventeringssteg som beskrivs i följande avsnitt innan du börjar.

Lagerserverkapacitet

Dokumentera maskinvaran (minne, CPU, disk) för de aktuella produktionsservrarna och det genomsnittliga och högsta antalet begäranden och resursanvändningen. Du behöver denna information oavsett vilken migrerings väg du väljer. Det är till exempel användbart att hjälpa till att vägleda valet av App Service-planen.

Listan över tillgängliga App Service-plannivåer visar information om minne, CPU-kärnor, lagring och priser. Observera att JBoss EAP på App Service endast är tillgängligt på nivåerna Premium V3 och Isolerad V2 App Service-plan.

Inventera alla hemligheter

Kontrollera alla egenskaper och konfigurationsfiler på produktionsservern eller -servrarna efter hemligheter och lösenord. Kontrollera ibm-web-bnd.xml i dina WAR-filer. Konfigurationsfiler som innehåller lösenord eller autentiseringsuppgifter kan också finnas i ditt program. Dessa filer kan för Spring Boot-program innehålla filerna application.properties eller application.yml .

Inventera alla certifikat

Dokumentera alla certifikat som används för offentliga SSL-slutpunkter. Du kan visa alla certifikat på produktionsservrarna genom att köra följande kommando:

keytool -list -v -keystore <path to keystore>

Validera att Java-versionen som stöds fungerar som den ska

JBoss EAP på Azure App Service stöder Java 8 och 11. Därför måste du kontrollera att ditt program kan köras korrekt med den version som stöds. Den här verifieringen är särskilt viktig om servern använder ett JDK som stöds (till exempel Oracle JDK eller IBM OpenJ9).

Du får den aktuella Java-versionen genom att logga in på din produktionsserver och köra följande kommando:

java -version

Inventera JNDI-resurser

Inventera alla JNDI-resurser. Vissa resurser, till exempel JMS-meddelandeköer, kan kräva migrering eller omkonfiguration.

I ditt program

Granska filen WEB-INF/ibm-web-bnd.xml och/eller filen WEB-INF/web.xml.

Avgöra om databaser används

Om ditt program använder några databaser måste du samla in följande information:

  • Namnet på datakällan.
  • Konfigurationen av anslutningspoolen.
  • Platsen för JAR-filen för JDBC-drivrutinen.

Kontrollera om och hur filsystemet används

All användning av programserverns filsystem kräver omkonfiguration eller, i sällsynta fall, arkitektoniska ändringar. Filsystemet kan användas av delade WebSphere-moduler eller av programkoden. Du kanske känner igen några eller alla av följande scenarier.

Skrivskyddat statiskt innehåll

Om ditt program för tillfället hanterar statiskt innehåll behöver du en alternativ plats för det. Du kanske kan tänka dig att flytta det statiska innehållet till Azure Blob Storage och lägga till Azure CDN för blixtsnabba nedladdningar globalt. Mer information finns i Värd för statiska webbplatser i Azure Storage och snabbstart: Integrera ett Azure Storage-konto med Azure CDN. Du kan också distribuera det statiska innehållet direkt till en app i Azure Spring Apps Enterprise-planen. Mer information finns i Distribuera webbstatiska filer.

Dynamiskt publicerat statiskt innehåll

Om ditt program tillåter att statiskt innehåll laddas upp/skapas av ditt program, men inte kan ändras efter att det har skapats, så kan du använda Azure Blob Storage och Azure CDN enligt beskrivningen ovan, med en Azure-funktion för hantering av överföringar och CDN-uppdateringar. Vi har tillhandahållit en exempelimplementering som du kan använda i Överföra och CDN-för inläsa statiskt innehåll med Azure Functions. Du kan också distribuera det statiska innehållet direkt till en app i Azure Spring Apps Enterprise-planen. Mer information finns i Distribuera webbstatiska filer.

Dynamiskt eller internt innehåll

För filer som ofta skrivs och läses av ditt program (till exempel temporära datafiler) eller statiska filer som endast är synliga för ditt program kan du montera Azure Storage i App Service-filsystemet. Mer information finns i Hantera innehåll från Azure Storage i App Service på Linux.

Ta reda på om programmet är beroende av schemalagda jobb

Schemalagda jobb, till exempel Quartz Scheduler-uppgifter eller Unix cron-jobb, ska INTE användas med Azure App Service. Azure App Service hindrar dig inte från att distribuera ett program som innehåller schemalagda uppgifter internt. Om ditt program skalas ut kan dock samma schemalagda jobb köras mer än en gång per schemalagd period. Den här situationen kan leda till oönskade konsekvenser.

Om du vill köra schemalagda jobb i Azure kan du överväga att använda Azure Functions med en timerutlösare. Mer information finns i Timer-utlösare för Azure Functions. Du behöver inte migrera själva jobbkoden till en funktion. Funktionen kan helt enkelt anropa en URL i ditt program för att utlösa jobbet.

Kommentar

För att förhindra skadlig användning måste du förmodligen se till att jobbanropets slutpunkt kräver autentiseringsuppgifter. I det här fallet måste utlösarfunktionen ange autentiseringsuppgifterna.

Avgör om en anslutning till lokalt behövs

Om ditt program behöver har åtkomst till någon av dina lokala tjänster måste du etablera en av Azures anslutningstjänster. Mer information finns i Välj en lösning för att ansluta ett lokalt nätverk till Azure. Alternativt måste du omstrukturera programmet för att använda allmänt tillgängliga API:er som dina lokala resurser exponerar.

Ta reda på om JMS-köer eller -ämnen (Java Message Service) används

Om ditt program använder JMS-köer eller -ämnen måste du migrera dem till en extern JMS-server. Azure Service Bus och AMQP (Advanced Message Queueing Protocol) kan vara en bra migreringsstrategi för de som använder JMS. Mer information finns i Använda JMS med Azure Service Bus och AMQP 1.0.

Om JMS beständiga arkiv har konfigurerats måste du avbilda konfigurationen och tillämpa den efter migreringen.

Kontrollera om ditt program använder WebSphere-specifika API:er

Om ditt program använder WebSphere-specifika API:er måste du omstrukturera programmet för att INTE använda dem. Red Hat Migration Toolkit for Apps kan hjälpa dig att ta bort och omstrukturera dessa beroenden.

Ta reda på om ditt program använder entitetsbönor eller DMP-bönor med EJB 2.x-format

Om programmet använder entitetsbönor eller CMP-böner med EJB 2.x-format behöver du omstrukturera programmet och ta bort dessa beroenden.

Avgöra om javaEE-programklientfunktionen används

Om du har klientprogram som ansluter till ditt (server)-program med hjälp av javaEE-programklientfunktionen måste du omstrukturera både dina klientprogram och ditt (server)-program för att använda HTTP-API:er.

Ta reda på om ditt program innehåller en operativsystemsspecifik kod

Om programmet innehåller en kod med beroenden i värdoperativsystemet måste du omstrukturera det för att ta bort dessa beroenden. Du kan exempelvis bli tvungen att ersätta all användning av / eller \ i filsystemets sökvägar med File.Separator eller Paths.get.

Ta reda på om EJB-timers används

Om ditt program använder EJB-timers måste du verifiera att EJB-timerkoden kan utlösas av varje JBoss EAP-instans separat. Den här valideringen krävs eftersom varje EJB-timer utlöses på sin egen JBoss EAP-instans när din App Service skalas vågrätt.

Kontrollera om JCA-anslutningsprogram används

Om ditt program använder JCA-anslutningsappar måste du verifiera att JCA-anslutningsappen kan användas på JBoss EAP. Om JCA-implementeringen är kopplad till WebSphere måste du omstrukturera programmet och ta bort beroendet av JCA-anslutningstjänsten. Om JCA-anslutningsappen kan användas måste du lägga till JAR:erna i serverklassökvägen. Du måste också placera de nödvändiga konfigurationsfilerna på rätt plats i JBoss EAP-serverkatalogerna för att de ska vara tillgängliga.

Ta reda på om JAAS används

Om ditt program använder JAAS måste du samla in hur JAAS har konfigurerats. Om den använder en databas kan du konvertera den till en JAAS-domän på JBoss EAP. Om det är en anpassad implementering måste du verifiera att den kan användas på JBoss EAP.

Ta redan på om programmet använder en resursadapter

Om ditt program behöver ett resurskort (RA) måste det vara kompatibelt med JBoss EAP. Kontrollera om RA fungerar bra på en fristående instans av JBoss EAP genom att distribuera den till servern och konfigurera den korrekt. Om RA fungerar korrekt måste du lägga till JAR:erna i serverklasssökvägen för App Service-instansen och placera de nödvändiga konfigurationsfilerna på rätt plats i JBoss EAP-serverkatalogerna för att den ska vara tillgänglig.

Ta reda på om ditt program består av flera WAR

Om ditt program består av flera WAS så ska du behandla vart och ett av dem som separarata program och gå igenom den här guiden för varje.

Ta reda på om ditt program är paketerat som EAR

Om ditt program paketeras som en EAR-fil bör du undersöka filerna application.xml och ibm-application-bnd.xml och samla in deras konfigurationer.

Identifiera alla externa processer och daemons som körs på produktionsservrarna

Om du har processer som körs utanför programservern, som övervaknings-daemons så behöver du eliminera dem eller migrera dem någon annanstans.

Migrering

Red Hat Migration Toolkit för appar

Red Hat Migration Toolkit for Applications är ett kostnadsfritt tillägg för Visual Studio Code. Det här tillägget analyserar programkoden och konfigurationen för att ge rekommendationer för migrering av dina Jakarta EE-program till JBoss EAP från andra appservrar, till exempel att ta bort beroenden för proprietära API:er. Tillägget ger också rekommendationer om du migrerar till molnet från en lokal plats. Mer information finns i Översikt över Migreringsverktyg för program.

Innehållet i den här guiden hjälper dig att hantera de andra komponenterna i migreringsresan, till exempel att välja rätt App Service-plantyp, externalisera sessionstillståndet och använda Azure för att hantera dina EAP-instanser i stället för JBoss-hanteringsgränssnittet.

Etablera en App Service-plan

I listan över tillgängliga tjänstplaner väljer du den plan vars specifikationer uppfyller eller överskrider specifikationerna för den aktuella produktionsmaskinvaran.

Kommentar

Om du planerar att köra mellanlagrings-/kontrollvärdesdistributioner eller använda distributionsfack måste App Service-planen innehålla denna ytterligare kapacitet. Vi rekommenderar att du använder en Premium-plan eller högre för Java-program.

Skapa apptjänstplanen.

Skapa och distribuera webbappar

Du måste skapa en webbapp i din App Service-plan för varje WAR-fil som distribueras till din JBoss EAP-server.

Kommentar

Även om det är möjligt att distribuera flera WAR-filer till en enda webbapp, så är det synnerligen olämpligt. Om du distribuerar flera WAR-filer till en enda webbapp, så förhindrar du varje enskilt program från att skalas enligt dess egna användningskrav. Det ökar också komplexiteten för efterföljande distributionspipelines. Om flera program måste vara tillgängliga på samma URL bör du överväga att använda en routningslösning som Azure Application Gateway.

Maven-program

Om programmet har skapats från en Maven POM-fil, så skapa webbappen och distribuera ditt program genom att använda webbapps-plugin-programmet för Maven. Mer information finns i avsnittet Konfigurera Plugin-programmet Maven i Snabbstart: Skapa en Java-app i Azure App Service.

Andra program än Maven-program

Om du inte kan använda Maven-plugin-programmet måste du etablera webbappen med andra medel, som exempelvis:

När du har skapat webbappen använder du någon av de tillgängliga distributionsmekanismerna för att distribuera ditt program. Mer information finns iDistribuera filer till App Service.

Migrera JVM-körningsalternativen

Om ditt program kräver specifika körningsalternativ, så använd den lämpligaste metoden för att ange dem. Mer information finns i avsnittet Ange Java-körningsalternativ i Konfigurera en Java-app för Azure App Service.

Fyll i hemligheter

Använd Programinställningar när du ska lagra alla hemligheter som är specifika för ditt program. Om du tänker använda samma hemlighet eller hemligheter mellan flera program, eller om du behöver detaljerade åtkomstprinciper och granskningsfunktioner, använder du Azure Key Vault-referenser i stället. Mer information finns i avsnittet Använda KeyVault-referenser i Konfigurera en Java-app för Azure App Service.

Aktivera anpassad domän SSL

Om programmet ska vara synligt i en anpassad domän måste du mappa ditt webbprogram till det. Mer information finns i Självstudie: Mappa ett befintligt anpassat DNS-namn till Azure App Service.

Sedan måste du binda TLS/SSL-certifikatet för den domänen till apptjänstens webbapp. Mer information finns i Skydda ett anpassat DNS-namn med en TLS/SSL-bindning i Azure App Service.

Migrera datakällor, bibliotek och JNDI-resurser

Om du vill migrera datakällor följer du stegen i avsnittet Konfigurera datakällor i Konfigurera en Java-app för Azure App Service.

Migrera eventuella ytterligare klassökvägsberoenden på servernivå genom att följa anvisningarna i avsnittet JBoss EAP i Konfigurera en Java-app för Azure App Service.

Migrera eventuella ytterligare JDNI-resurser på delad servernivå. Mer information finns i avsnittet JBoss EAP i Konfigurera en Java-app för Azure App Service.

Kommentar

Om du följer den rekommenderade arkitekturen för ett WAR per program kan du överväga att migrera klassökvägsbibliotek på servernivå och JNDI-resurser till ditt program. Om du gör det förenklas komponentstyrning och ändringshantering avsevärt. Om du vill distribuera mer än ett WAR per program bör du granska någon av våra kompletterande guider som nämns i början av den här guiden.

Migrera schemalagda jobb

Du bör åtminstone flytta dina schemalagda jobb till en virtuell Azure-dator så att de inte längre är en del av ditt program. Alternativt kan du välja att modernisera dem till händelsedrivna Java med hjälp av Azure-tjänster som Azure Functions, SQL Database och Event Hubs.

Omstart- och röktest

Slutligen måste du starta om din webbapp, så att alla konfigurationsändringar tillämpas. När omstarten är klar kontrollerar du att programmet fungerar som det ska.

Efter migreringen

Nu när du har migrerat ditt program till Azure App Service bör du kontrollera att det fungerar som förväntat. När du har gjort det har vi några rekommendationer för dig som kan göra ditt program lämpligare för molnet.

Rekommendationer