Migrera WebLogic Server-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 WebLogic Server-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.
Om du inte kan uppfylla något av dessa krav före migreringen kan du läsa guiden för kompletterande migrering för att migrera dina program till virtuella datorer i stället: Migrera WebLogic Server-program till Azure Virtual Machines
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
Innan tekniker för konfiguration som en tjänst, till exempel Azure Key Vault, fanns det inget väldefinierat koncept för hemligheter. I stället hade du skilda uppsättningar konfigurationsinställningar som fungerade som det vi nu kallar hemligheter. Med appservrar som WebLogic Server finns dessa hemligheter i många olika konfigurationsfiler och konfigurationsarkiv. Kontrollera alla egenskaper och konfigurationsfiler på produktionsservrarna efter hemligheter och lösenord. Kontrollera weblogic.xml i dina WAR. Konfigurationsfiler som innehåller lösenord eller autentiseringsuppgifter kan också finnas i ditt program. Mer information finns i Grundläggande koncept för Azure Key Vault.
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>
Inventera JNDI-resurser
Inventera alla JNDI-resurser. Till exempel kan datakällor som databaser, ha ett associerat JNDI-namn som gör det möjligt för JPA att korrekt binda instanser av EntityManager
till en viss databas. Mer information om JNDI-resurser och databaser finns i WebLogic Server-datakällor i Oracle-dokumentationen. Andra JNDI-relaterade resurser som JMS asynkron meddelandekö kan kräva migrering eller omkonfiguration. Mer information om JMS-konfiguration finns i Oracle WebLogic Server 12.2.1.4.0.
Granska domänkonfigurationen
Huvudkonfigurationsenheten i WebLogic-servern är domänen. Därför innehåller config.xml-filen en enorm mängd konfigurationer som du måste överväga vid migrering. Filen innehåller referenser till ytterligare XML-filer som lagras i underkataloger. Oracle rekommenderar att du normalt använder administrationskonsolen för att konfigurera WebLogic-serverns hanterbara objekt och tjänster och låter WebLogic-servern underhålla config.xml-filen. Mer information finns i Domänkonfigurationsfiler.
I ditt program
Kontrollera WEB-INF/weblogic.xml-filen och/eller WEB-INF/web.xml-filen.
Fastställ om sessionsreplikering används
Om ditt program förlitar sig på sessionsreplikering med eller utan Oracle Coherence*Web så har du två alternativ:
- Omstrukturera ditt program att använda en databas för sessionshantering.
- Omstrukturera ditt program att externalisera sessionen till Azure Redis-tjänsten. Mer information finns i Azure Cache for Redis.
För alla dessa alternativ är det en bra idé att lära sig hur WebLogic utför replikering av HTTP-sessionstillstånd. Mer information finns i Replikering av HTTP-sessionstillstånd i Oracle-dokumentationen.
Dokumentets datakällor
Om ditt program använder några databaser måste du samla in följande information:
- What is the datakällans namn?
- Vad är konfigurationen för anslutningspoolen?
- Var hittar jag JAR-filen för JDBC-drivrutinen?
Mer information om JDBC-drivrutiner i WebLogic finns i Använda JDBC-drivrutiner med WebLogic Server.
Fastställ om WebLogic har anpassats
Fastställ vilken av följande anpassningar som har gjorts och registrera vad som har gjorts.
- Har startskripten ändrats? Sådana skript är setDomainEnv, commEnv, startWebLogicoch stopWebLogic.
- Finns det några speciella parametrar som skickas till JVM?
- Har JAR lagts till i server-classpath?
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 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 Java Message Service 1.1 med Azure Service Bus Standard och AMQP 1.0.
Om JMS beständiga arkiv har konfigurerats måste du avbilda konfigurationen och tillämpa den efter migreringen.
Fastställ om du använder dina egna anpassade Delade Java EE-bibliotek
Om du använder funktionen med Delade Java EE-bibliotek så har du två alternativ:
- Återför programkoden för att ta bort alla beroenden i dina bibliotek, och inkludera i stället funktionerna direkt i programmet.
- Lägg till biblioteken till server-classpath.
Ta reda på om OSGi-paket används
Om du använde OSGi-paket som lagts till i WebLogic-servern, måste du lägga till motsvarande JAR-filer direkt i ditt webbprogram.
Ta reda på om ditt program innehåller en operativsystemsspecifik kod
Om ditt program innehåller någon kod med beroenden på värdoperativsystemet måste du omstrukturera det för att ta bort dessa beroenden. Du kan till exempel behöva ersätta all användning av /
eller \
i filsystemsökvägar med File.Separator
eller Paths.get
om programmet körs i Windows.
Fastställ om Oracle Service Bus används
Om ditt program använder Oracle Service Bus (OSB) måste du avbilda hur OSB har konfigurerats. Mer information finns i Om Oracle Service Bus-installationen.
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 är paketerat som en EAR-fil bör du kontrollera filerna application.xml- och weblogic-application.xml och avbilda 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.
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
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 WebLogic Scripting Tool (WLST) används
Om du för närvarande använder WLST för att utföra distributionen måste du utvärdera vad den gör. Om WLST ändrar några (körningsparametrar) för ditt program som en del av distributionen måste du se till att dessa parametrar överensstämmer med något av följande alternativ:
- De är externaliserade som appinställningar.
- De är inbäddade i ditt program.
- De använder JBoss CLI under distributionen.
Om WLST gör mer än vad som nämns ovan har du ytterligare arbete att göra under migreringen.
Kontrollera om ditt program använder WebLogic-specifika API:er
Om ditt program använder WebLogic-specifika API:er måste du omstrukturera programmet för att INTE använda dem. Om du till exempel har använt en klass som nämns i Java API-referensen för Oracle WebLogic Server använder ditt program ett WebLogic-specifikt API. 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 ditt program använder Entity Beans eller EJB 2.x-CMP-bönor måste du omstrukturera programmet för att INTE använda dem.
Ta reda på om funktionen Java EE-programklient används
Om du har klientprogram som ansluter till ditt (server)-program med hjälp av Java EE-programklientfunktionen måste du omstrukturera både dina klientprogram och ditt (server)-program för att använda HTTP-API:er.
Kontrollera om en distributionsplan användes
Om en distributionsplan användes för att utföra distributionen måste du utvärdera vad distributionsplanen gör. Om distributionsplanen är en direkt distribution kan du distribuera ditt webbprogram utan några ändringar. Om distributionsplanen är mer avancerad måste du avgöra om du kan använda JBoss CLI för att konfigurera programmet som en del av distributionen. Om det inte går att använda JBoss CLI måste du återställa ditt program på ett sådant sätt att det inte längre behövs någon distributionsplan.
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 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 WebLogic-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 närvarande hanterar statiskt innehåll krävs en alternativ plats för det statiska innehållet. Du kan överväga att flytta statiskt innehåll till Azure Blob Storage och lägga till Azure CDN för blixtsnabba nedladdningar globalt.
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 för din användning.
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 Azure Storage monteras i App Service-filsystemet.
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 WebLogic måste du omstrukturera programmet för att INTE använda JCA-anslutningstjänsten. Om den kan användas måste du lägga till JAR:erna i serverklassökvägen och placera de nödvändiga konfigurationsfilerna på rätt plats i JBoss EAP-serverkatalogerna för att de ska vara tillgängliga.
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.
Avgöra 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.
Fastställ om WebLogic-klustring används
Förmodligen har du distribuerat ditt program på flera WebLogic-servrar för att uppnå hög tillgänglighet. Azure App Service kan skalas, men om du har använt WebLogic-kluster-API:et måste du omstrukturera koden för att eliminera användningen av det API:et.
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 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.
Migrera externaliserade parametrar
Om du behöver använda externa parametrar måste du ange dem som appinställningar. Mer information finns i Konfigurera appinställningar.
Migrera startskript
Om det ursprungliga programmet använde ett anpassat startskript måste du migrera det till ett Bash-skript. Mer information finns i Anpassa programserverkonfiguration.
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.
Konfigurera anpassad domän och 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.
Migrera JCA-anslutningsappar och JAAS-moduler
Migrera jca-anslutningsappar och JAAS-moduler genom att följa anvisningarna i Installera moduler och beroenden.
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 mer molnbaserat.
Rekommendationer
Om du valde att använda katalogen /home för fillagring bör du överväga att ersätta den med Azure Storage. Mer information finns i Montera Azure Storage som en lokal resurs i en anpassad container i App Service.
Om du har konfiguration i katalogen /home som innehåller anslutningssträng, SSL-nycklar och annan hemlig information kan du överväga att använda en kombination av Azure Key Vault och parameterinmatning med programinställningar där det är möjligt. Mer information finns i Använda Key Vault-referenser för App Service och Azure Functions och Konfigurera en App Service-app.
Överväg att använda distributionsplatser för tillförlitliga distributioner utan driftstopp. Mer information finns i Konfigurera mellanlagringsmiljöer i Azure App Service.
Utforma och implementera en DevOps-strategi. Om du vill bibehålla tillförlitligheten samtidigt som du ökar din utvecklingshastighet bör du överväga att automatisera distributioner och testning med Azure-pipelines. Mer information finns i Skapa och distribuera till Java-webbapp. Om du använder distributionsplatser kan du automatisera distributionen till ett fack och det efterföljande fackbytet. Mer information finns i avsnittet Exempel: Distribuera till ett fack i Distribuera till App Service med Azure Pipelines.
Utforma och implementera en strategi för affärskontinuitet och haveriberedskap. För verksamhetskritiska program bör du överväga en distributionsarkitektur för flera regioner. Mer information finns i Webbprogram för flera regioner med hög tillgänglighet.