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.
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
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.
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.
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>
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.
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.
Inspecteer het bestand WEB-INF/weblogic.xml en/of het bestand WEB-INF/web.xml.
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.
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.
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?
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.
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.
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.
Als u OSGi-bundels hebt toegevoegd aan de WebLogic-server, moet u de equivalente JAR-bestanden rechtstreeks aan uw webtoepassing toevoegen.
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.
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.
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.
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.
U moet alle processen die buiten de toepassingsserver worden uitgevoerd, zoals controledaemons, verwijderen of naar een andere locatie migreren.
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
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.
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.
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.
Als uw toepassing Gebruikmaakt van Entity Beans- of EJB 2.x-stijl CMP-bonen, moet u uw toepassing herstructureren om deze NIET te gebruiken.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Als u externe parameters moet gebruiken, moet u deze instellen als app-instellingen. Zie App-instellingen configureren voor meer informatie.
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.
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.
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.
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.
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.
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.
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.
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.
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.