WebLogic Server-toepassingen migreren naar JBoss EAP op Azure-app Service
In deze handleiding wordt beschreven waar u rekening mee moet houden wanneer u een bestaande WebLogic Server-toepassing wilt migreren die moet worden uitgevoerd op Azure-app Service met behulp van JBoss EAP.
Premigratie
Voltooi voordat u begint de evaluatie- en inventarisstappen die in de volgende secties worden beschreven om een geslaagde migratie te garanderen.
Als u niet aan een van deze vereisten vóór de migratie kunt voldoen, raadpleegt u de aanvullende migratiehandleiding voor het migreren van uw toepassingen naar virtuele machines: WebLogic Server-toepassingen migreren naar Azure Virtual Machines
Servercapaciteit inventariseren
Documenteer de hardware (geheugen, CPU, schijf) van de huidige productieserver(s) en het gemiddelde en piekaantal aanvragen en het resourcegebruik. U hebt deze informatie nodig, welk migratiepad u ook kiest. Het is bijvoorbeeld handig om u te helpen bij het selecteren van het App Service-plan.
In de lijst met beschikbare App Service-planlagen ziet u de geheugen-, CPU-kernen, opslag en prijsinformatie. JBoss EAP in App Service is alleen beschikbaar in de lagen Premium V3 en Isolated V2 App Service Plan.
Alle geheimen inventariseren
Voor de ontwikkeling van 'configuratie als een service'-technologieën zoals Azure Key Vault, was er geen goed gedefinieerd concept voor 'geheimen'. In plaats daarvan had u een set uiteenlopende configuratie-instellingen die functioneerden als wat we nu 'geheimen' noemen. Bij app-servers zoals WebLogic Server bevinden deze geheimen zich in veel verschillende configuratiebestanden en configuratiearchieven. Controleer alle eigenschaps- en configuratiebestanden op de productieserver(s) op geheimen en wachtwoorden. Controleer in elk geval weblogic.xml in uw WAR's. Mogelijk bevinden zich ook in uw toepassing configuratiebestanden met wachtwoorden of referenties. Zie Basisconcepten van Azure Key Vault voor meer informatie.
Alle certificaten inventariseren
Documenteer alle certificaten die worden gebruikt voor openbare SSL-eindpunten. U kunt alle certificaten op de productieserver(s) weergeven door de volgende opdracht uit te voeren:
keytool -list -v -keystore <path to keystore>
JNDI-resources inventariseren
Inventariseer alle JNDI-resources. Gegevensbronnen zoals databases kunnen bijvoorbeeld een gekoppelde JNDI-naam hebben waarmee JPA op de juiste wijze exemplaren van EntityManager
aan een bepaalde database kan binden. Zie WebLogic Server-gegevensbronnen in de Oracle-documentatie voor meer informatie over JNDI-resources en -databases. Andere JNDI-gerelateerde resources, zoals JMS-berichtenbrokers, moeten mogelijk worden gemigreerd of opnieuw worden geconfigureerd. Zie Oracle WebLogic Server 12.2.1.4.0 voor meer informatie over de JMS-configuratie.
Uw domeinconfiguratie controleren
De belangrijkste configuratie-eenheid in WebLogic Server is het domein. Als zodanig bevat het bestand config.xml een schat aan configuratie-informatie die u zorgvuldig moet overwegen voor migratie. Het bestand bevat verwijzingen naar aanvullende XML-bestanden die zijn opgeslagen in submappen. Oracle adviseert u om normaal gesproken de Beheerconsole te gebruiken om de beheerbare objecten en services van WebLogic Server te configureren en om WebLogic Server toe te staan het bestand config.xml te onderhouden. Zie Domeinconfiguratiebestanden voor meer informatie.
Binnen uw toepassing
Inspecteer het bestand WEB-INF/weblogic.xml en/of het bestand WEB-INF/web.xml.
Bepalen of sessiereplicatie wordt gebruikt
Als uw toepassing afhankelijk is van sessiereplicatie, met of zonder Oracle Coherence*Web, hebt u twee opties:
- Herstructureer uw toepassing om een database te gebruiken voor sessiebeheer.
- Herstructureer uw toepassing om de sessie te externaliseren naar Azure Redis Service. Zie Azure Cache voor Redis voor meer informatie.
Voor al deze opties is het verstandig om te leren hoe in WebLogic de HTTP-sessiestatus wordt gerepliceerd. Zie De HTTP-sessiestatus repliceren in de Oracle-documentatie voor meer informatie.
Gegevensbronnen documenteren
Als uw toepassing gebruikmaakt van databases, moet u de volgende informatie vastleggen:
- Wat is de naam van de gegevensbron?
- Wat is de configuratie van de verbindingsgroep?
- Waar vind ik het JAR-bestand van het JDBC-stuurprogramma?
Zie JDBC-stuurprogramma's gebruiken met WebLogic Server voor meer informatie over JDBC-stuurprogramma's in WebLogic.
Bepalen of WebLogic is aangepast
Bepaal welke van de volgende aanpassingen zijn uitgevoerd en leg vast wat er is gebeurd.
- Zijn de opstartscripts gewijzigd? Dergelijke scripts bevatten setDomainEnv, commEnv, startWebLogic en stopWebLogic.
- Zijn er specifieke parameters aan de JVM doorgegeven?
- Zijn er JAR's toegevoegd aan het classpath van de server?
Bepalen of er een verbinding met on-premises services is vereist
Als voor uw toepassing toegang nodig is tot een van uw on-premises services, moet u een van de connectiviteitsservices van Azure inrichten. Zie Connect an on-premises network to Azure (Een on-premises netwerk verbinden met Azure) voor meer informatie. U moet uw toepassing ook herstructureren voor het gebruik van openbaar beschikbare API's in uw on-premises resources.
Bepalen of Java Message Service-wachtrijen (JMS) of -onderwerpen in gebruik zijn
Als uw toepassing JMS-wachtrijen of -onderwerpen gebruikt, moet u deze migreren naar een extern gehoste JMS-server. Azure Service Bus en het Advanced Message Queueing Protocol (AMQP) kunnen een uitstekende migratiestrategie zijn wanneer er gebruik wordt gemaakt van JMS. Zie Java Message Service 1.1 gebruiken met Azure Service Bus Standard en AMQP 1.0 voor meer informatie.
Als er met JMS permanente archieven zijn geconfigureerd, moet u de configuratie hiervan vastleggen en na de migratie toepassen.
Bepalen of u uw eigen aangepaste, gedeelde Java EE-bibliotheken gebruikt
Als u de functie Gedeelde Java EE-bibliotheek gebruikt, hebt u twee opties:
- Herstructureer uw toepassingscode om alle afhankelijkheden van uw bibliotheken te verwijderen en de functionaliteit in plaats daarvan rechtstreeks in uw toepassing op te nemen.
- Voeg de bibliotheken toe aan het klassepad van de server.
Bepalen of OSGi-bundels worden gebruikt
Als u OSGi-bundels hebt toegevoegd aan de WebLogic-server, moet u de equivalente JAR-bestanden rechtstreeks aan uw webtoepassing toevoegen.
Bepalen of uw toepassing code bevat die specifiek is voor het besturingssysteem
Als uw toepassing code bevat met afhankelijkheden van het host-besturingssysteem, moet u deze herstructureren om deze afhankelijkheden te verwijderen. U moet bijvoorbeeld het gebruik van /
of \
in bestandssysteempaden vervangen door File.Separator
of Paths.get
als uw toepassing wordt uitgevoerd in Windows.
Bepalen of Oracle Service Bus wordt gebruikt
Als uw toepassing gebruikmaakt van Oracle Service Bus (OSB), moet u vastleggen hoe OSB is geconfigureerd. Zie Over de Oracle Service Bus-installatievoor meer informatie.
Bepalen of uw toepassing bestaat uit meerdere WAR's
Als uw toepassing bestaat uit meerdere WAR's, moet u deze allemaal behandelen als afzonderlijke toepassingen en deze handleiding voor al deze WAR's doorlopen.
Bepalen of uw toepassing is verpakt als een EAR
Als uw toepassing is verpakt als een EAR-bestand, moet u de bestanden application.xml en weblogic-application.xml controleren en de configuratie ervan vastleggen.
Alle externe processen en daemons identificeren die worden uitgevoerd op de productieservers
U moet alle processen die buiten de toepassingsserver worden uitgevoerd, zoals controledaemons, verwijderen of naar een andere locatie migreren.
Controleren of de ondersteunde Java-versie goed werkt
JBoss EAP op Azure-app Service ondersteunt Java 8 en 11. Dat betekent dat u moet controleren of uw toepassing correct kan worden uitgevoerd met behulp van die ondersteunde versie. Deze validatie is vooral belangrijk als uw huidige server gebruikmaakt van een niet-ondersteunde JDK (zoals Oracle JDK of IBM OpenJ9).
Meld u aan bij uw productieserver en voer de volgende opdracht uit om uw huidige Java-versie te verkrijgen:
java -version
Bepalen of uw toepassing gebruikmaakt van geplande taken
Geplande taken, zoals Quartz Scheduler-taken of Unix Cron-taken, mogen niet worden gebruikt met Azure-app Service. Azure-app Service voorkomt niet dat u een toepassing met geplande taken intern implementeert. Als uw toepassing echter wordt uitgeschaald, kan dezelfde geplande taak meer dan één keer per geplande periode worden uitgevoerd. Deze situatie kan tot onbedoelde gevolgen leiden.
Als u geplande taken in Azure wilt uitvoeren, kunt u Overwegen Om Azure Functions te gebruiken met een timertrigger. Zie Timertrigger voor Azure Functions voor meer informatie. U hoeft de taakcode zelf niet naar een functie te migreren. Via de functie kan eenvoudig een URL in uw toepassing worden aangeroepen om de taak te activeren.
Notitie
Om kwaadwillend gebruik te voorkomen, moet u er waarschijnlijk voor zorgen dat er referenties vereist zijn voor het eindpunt dat de taak aanroept. In dit geval moeten de referenties worden opgegeven door de triggerfunctie.
Bepalen of WebLogic Scripting Tool (WLST) wordt gebruikt
Als u momenteel WLST gebruikt om de implementatie uit te voeren, moet u beoordelen wat het doet. Als WLST parameters van uw toepassing wijzigt als onderdeel van de implementatie, moet u ervoor zorgen dat deze parameters voldoen aan een van de volgende opties:
- Ze zijn geëxternaliseerd als app-instellingen.
- Ze zijn ingesloten in uw toepassing.
- Ze maken tijdens de implementatie gebruik van de JBoss-CLI.
Als WLST meer doet dan hierboven wordt vermeld, hebt u wat extra werk te doen tijdens de migratie.
Nagaan of uw toepassing code bevat die specifiek is voor WebLogic-API's
Als uw toepassing gebruikmaakt van WebLogic-specifieke API's, moet u uw toepassing herstructureren om deze NIET te gebruiken. Als u bijvoorbeeld een klasse hebt gebruikt die wordt vermeld in de Java API Reference for Oracle WebLogic Server, hebt u een WebLogic-specifieke API in uw toepassing gebruikt. De Red Hat Migration Toolkit for Apps kan helpen bij het verwijderen en herstructureren van deze afhankelijkheden.
Bepalen of uw toepassing gebruikmaakt van entiteitsbeans of CMP-beans van het type EJB 2.x
Als uw toepassing Gebruikmaakt van Entity Beans- of EJB 2.x-stijl CMP-bonen, moet u uw toepassing herstructureren om deze NIET te gebruiken.
Bepalen of de functie Java EE Application Client wordt gebruikt
Als u clienttoepassingen hebt die verbinding maken met uw (server)-toepassing met behulp van de functie Java EE-toepassingsclient, moet u zowel uw clienttoepassingen als uw (server)-toepassing herstructureren voor het gebruik van HTTP-API's.
Nagaan of een implementatieplan is gebruikt
Als er een implementatieplan is gebruikt om de implementatie uit te voeren, moet u beoordelen wat het implementatieplan doet. Als het implementatieplan een vrij eenvoudig te implementeren is, kunt u uw webtoepassing zonder wijzigingen implementeren. Als het implementatieplan wat uitgebreider is, moet u bepalen of u de JBoss-CLI kunt gebruiken om uw toepassing correct te configureren als onderdeel van de implementatie. Als het niet mogelijk is om de JBoss-CLI te gebruiken, moet u uw toepassing op een zodanige manier herstructureren dat een implementatieplan niet meer nodig is.
Bepalen of EJB-timers worden gebruikt
Als uw toepassing EJB-timers gebruikt, moet u controleren of de EJB-timercode onafhankelijk kan worden geactiveerd door elke JBoss EAP-instantie. Deze validatie is nodig omdat wanneer uw App Service horizontaal wordt geschaald, elke EJB-timer wordt geactiveerd op een eigen JBoss EAP-exemplaar.
Controleren of en hoe het bestandssysteem wordt gebruikt
Voor het gebruik van het bestandssysteem op de toepassingsserver is herconfiguratie vereist of zijn in zeldzame gevallen architectuurwijzigingen vereist. Het bestandssysteem kan worden gebruikt door gedeelde WebLogic-modules of door uw toepassingscode. U kunt enkele of elk van de volgende scenario's identificeren.
Statische alleen-lezeninhoud
Als uw toepassing momenteel statische inhoud bedient, is een alternatieve locatie voor die statische inhoud vereist. U kunt overwegen statische inhoud te verplaatsen naar Azure Blob Storage en Azure CDN toe te voegen voor razendsnelle downloads wereldwijd.
Dynamisch gepubliceerde statische inhoud
Als uw toepassing statische inhoud toestaat die wordt geüpload/geproduceerd door uw toepassing, maar onveranderbaar is nadat deze is gemaakt, kunt u Azure Blob Storage en Azure CDN gebruiken zoals hierboven beschreven, met een Azure-functie om uploads en CDN-vernieuwing te verwerken. We hebben een voorbeeld van een implementatie geleverd voor uw gebruik.
Dynamische of interne inhoud
Voor bestanden die vaak worden geschreven en gelezen door uw toepassing (zoals tijdelijke gegevensbestanden) of statische bestanden die alleen zichtbaar zijn voor uw toepassing, kan Azure Storage worden gekoppeld aan het App Service-bestandssysteem.
Nagaan of andere JCA-connectors worden gebruikt
Als uw toepassing JCA-connectors gebruikt, moet u valideren dat de JCA-connector kan worden gebruikt op JBoss EAP. Als de JCA-implementatie is gekoppeld aan WebLogic, moet u uw toepassing herstructureren om niet de JCA-connector te gebruiken. Als deze kan worden gebruikt, moet u de JAR's toevoegen aan het serverklassepad en de benodigde configuratiebestanden op de juiste locatie plaatsen in de JBoss EAP-servermappen zodat deze beschikbaar zijn.
Bepalen of uw toepassing gebruikmaakt van een resourceadapter
Als uw toepassing een resourceadapter (RA) nodig heeft, moet deze compatibel zijn met JBoss EAP. Bepaal of de RA prima werkt op een zelfstandig exemplaar van JBoss EAP door deze te implementeren op de server en deze correct te configureren. Als de RA goed werkt, moet u de JAR's toevoegen aan het serverklassepad van het App Service-exemplaar en de benodigde configuratiebestanden op de juiste locatie in de JBoss EAP-servermappen plaatsen zodat deze beschikbaar zijn.
Bepalen of JAAS wordt gebruikt
Als uw toepassing JAAS gebruikt, moet u vastleggen hoe JAAS is geconfigureerd. Als deze een database gebruikt, kunt u deze converteren naar een JAAS-domein op JBoss EAP. Als het een aangepaste implementatie is, moet u controleren of deze kan worden gebruikt in JBoss EAP.
Bepalen of WebLogic-clustering wordt gebruikt
Waarschijnlijk hebt u uw toepassing geïmplementeerd op meerdere WebLogic-servers om hoge beschikbaarheid te garanderen. Azure-app Service kan worden geschaald, maar als u de WebLogic Cluster-API hebt gebruikt, moet u uw code herstructureren om het gebruik van die API te elimineren.
Migratie
Red Hat Migration Toolkit for Apps
De Red Hat Migration Toolkit for Applications is een gratis extensie voor Visual Studio Code. Deze extensie analyseert uw toepassingscode en configuratie om aanbevelingen te doen voor het migreren van uw Jakarta EE-toepassingen naar JBoss EAP vanaf andere app-servers, zoals het verwijderen van afhankelijkheden van eigen API's. De extensie biedt ook aanbevelingen als u van on-premises naar de cloud migreert. Zie het overzicht van Migration Toolkit for Applications voor meer informatie.
De inhoud van deze handleiding helpt u bij het oplossen van de andere onderdelen van het migratietraject, zoals het kiezen van het juiste type App Service-plan, het externaliseren van uw sessiestatus en het gebruik van Azure om uw EAP-exemplaren te beheren in plaats van de JBoss Management-interface.
Een App Service-plan inrichten
Selecteer in de lijst met beschikbare serviceplannen het plan waarvan de specificaties voldoen aan of overschrijden van de specificaties van de huidige productiehardware.
Notitie
Als u van plan bent om faserings-/canaryimplementaties uit te voeren of om implementatiesites te gebruiken, moet het App Service-plan over die extra capaciteit beschikken. Het wordt aanbevolen om Premium-abonnementen of hoger te gebruiken voor Java-toepassingen.
Web-apps maken en implementeren
U moet een web-app maken in uw App Service-plan voor elk WAR-bestand dat is geïmplementeerd op uw JBoss EAP-server.
Notitie
Hoewel het mogelijk is om meerdere WAR-bestanden te implementeren in één web-app, is dit zeer onwenselijk. Wanneer u meerdere WAR-bestanden in één web-app implementeert, wordt voorkomen dat elke app wordt geschaald op basis van de eigen gebruiksvereisten. Het veroorzaakt ook meer complexiteit voor volgende implementatiepijplijnen. Als er meerdere apps op één URL beschikbaar moeten zijn, kunt u het beste een routeringsoplossing, zoals Azure Application Gateway, gebruiken.
Maven-apps
Als uw toepassing is ontwikkeld op basis van een Maven POM-bestand, gebruikt u de web-app-invoegtoepassing voor Maven om de web-app te maken en uw toepassing te implementeren. Zie de sectie Maven-invoegtoepassing configureren van Quickstart: Een Java-app maken in Azure-app Service voor meer informatie.
Andere toepassingen dan Maven-toepassingen
Als u de Maven-invoegtoepassing niet kunt gebruiken, moet u de web-app op andere manieren inrichten, zoals:
Nadat u de web-app hebt gemaakt, gebruikt u een van de beschikbare implementatiemechanismen om uw toepassing te implementeren. ZieBestanden implementeren in App Service voor meer informatie.
JVM-runtimeopties migreren
Als voor uw app specifieke runtimeopties vereist zijn, gebruikt u de beste methode om deze op te geven. Zie de sectie Java-runtimeopties instellen van Een Java-app configureren voor Azure-app Service voor meer informatie.
Ge externaliseerde parameters migreren
Als u externe parameters moet gebruiken, moet u deze instellen als app-instellingen. Zie App-instellingen configureren voor meer informatie.
Opstartscripts migreren
Als de oorspronkelijke toepassing een aangepast opstartscript heeft gebruikt, moet u dit migreren naar een Bash-script. Zie De configuratie van de toepassingsserver aanpassen voor meer informatie.
Geheimen vullen
Gebruik app-instellingen om geheimen op te slaan die specifiek zijn voor uw app. Als u hetzelfde geheim of dezelfde geheimen tussen meerdere toepassingen wilt gebruiken of als u gedetailleerde toegangsbeleidsregels en controlemogelijkheden nodig hebt, gebruikt u in plaats daarvan Azure Key Vault-verwijzingen. Zie de sectie KeyVault-verwijzingen gebruiken van Een Java-app configureren voor Azure-app Service voor meer informatie.
Aangepast domein en SSL configureren
Als uw toepassing wordt weergegeven in een aangepast domein, moet u uw webtoepassing hieraan toewijzen. Zie Zelfstudie: Een bestaande aangepaste DNS-naam toewijzen aan Azure-app Service voor meer informatie.
Vervolgens moet u het TLS/SSL-certificaat voor dat domein binden aan uw App Service-web-app. Zie Een aangepaste DNS-naam beveiligen met een TLS/SSL-binding in Azure-app Service voor meer informatie.
Gegevensbronnen, bibliotheken en JNDI-resources migreren
Als u gegevensbronnen wilt migreren, volgt u de stappen in de sectie Gegevensbronnen configureren van een Java-app configureren voor Azure-app Service.
Migreer eventuele aanvullende klassepadafhankelijkheden op serverniveau door de instructies te volgen in de sectie JBoss EAP van Een Java-app configureren voor Azure-app Service.
Migreer eventuele aanvullende JDNI-resources op serverniveau. Zie de sectie JBoss EAP van Een Java-app configureren voor Azure-app Service voor meer informatie.
JCA-connectors en JAAS-modules migreren
Migreer eventuele JCA-connectors en JAAS-modules door de instructies te volgen bij Modules en afhankelijkheden installeren.
Notitie
Als u de aanbevolen architectuur van één WAR per toepassing volgt, kunt u overwegen om klassepadbibliotheken en JNDI-resources op serverniveau naar uw toepassing te migreren. Dit vereenvoudigt het beheer van onderdelen en wijzigingsbeheer aanzienlijk. Als u meer dan één WAR per toepassing wilt implementeren, moet u een van onze aanvullende handleidingen bekijken die aan het begin van deze handleiding worden vermeld.
Geplande taken migreren
U moet uw geplande taken minimaal verplaatsen naar een Virtuele Azure-machine, zodat ze geen deel meer uitmaken van uw toepassing. U kunt er ook voor kiezen om ze te moderniseren in gebeurtenisgestuurde Java met behulp van Azure-services zoals Azure Functions, SQL Database en Event Hubs.
Opnieuw starten en functioneel testen
Ten slotte moet u de web-app opnieuw starten om alle configuratiewijzigingen toe te passen. Wanneer de web-app opnieuw is gestart, controleert u of deze juist wordt uitgevoerd.
Postmigratie
Nu u uw toepassing hebt gemigreerd naar Azure-app Service, moet u controleren of deze werkt zoals verwacht. Zodra u dat hebt gedaan, hebben we enkele aanbevelingen voor u die uw toepassing meer cloudeigen kunnen maken.
Aanbevelingen
Als u ervoor hebt gekozen om de /home directory voor bestandsopslag te gebruiken, kunt u overwegen deze te vervangen door Azure Storage. Zie Azure Storage koppelen als een lokale share in een aangepaste container in App Service voor meer informatie.
Als u configuratie hebt in de /home directory die verbindingsreeks s, SSL-sleutels en andere geheime informatie bevat, kunt u eventueel een combinatie van Azure Key Vault en parameterinjectie gebruiken met toepassingsinstellingen. Zie Key Vault-verwijzingen gebruiken voor App Service en Azure Functions en Een App Service-app configureren voor meer informatie.
Overweeg implementatiesites te gebruiken voor betrouwbare implementaties zonder downtime. Zie Faseringsomgevingen in Azure App Service instellen voor meer informatie.
Ontwerp en implementeer een DevOps-strategie. Als u sneller wilt ontwikkelen zonder dat dit ten koste gaat van de betrouwbaarheid, kunt u het beste implementaties en testen automatiseren met Azure Pipelines. Zie Bouwen en implementeren in Java-web-app voor meer informatie. Als u implementatiesites gebruikt, kunt u de implementatie automatiseren naar een site en de volgende sitewisseling. Zie het voorbeeld: Implementeren in een sitesectie van Deploy to App Service met behulp van Azure Pipelines voor meer informatie.
Ontwerp en implementeer een strategie voor bedrijfscontinuïteit en herstel na noodgevallen. Voor bedrijfskritische toepassingen kunt u het beste een implementatiearchitectuur voor meerdere regio's gebruiken. Zie De webtoepassing Met hoge beschikbaarheid voor meerdere regio's voor meer informatie.