WebSphere-toepassingen migreren naar JBoss EAP op Azure-app Service

In deze handleiding wordt beschreven waar u rekening mee moet houden wanneer u een bestaande WebSphere-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.

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

Controleer alle eigenschappen en configuratiebestanden op de productieserver of -servers op geheimen en wachtwoorden. Controleer in elk geval ibm-web-bnd.xml in uw WAR's. Mogelijk bevinden zich ook in uw toepassing configuratiebestanden met wachtwoorden of referenties. Deze bestanden kunnen bestaan uit spring Boot-toepassingen, de application.properties - of application.yml-bestanden .

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>

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

JNDI-resources inventariseren

Inventariseer alle JNDI-resources. Voor sommige resources, zoals JMS-berichtbrokers, is mogelijk migratie of herconfiguratie vereist.

Binnen uw toepassing

Inspecteer het BESTAND WEB-INF/ibm-web-bnd.xml en/of het WEB-INF/web.xml-bestand .

Bepalen of databases worden gebruikt

Als uw toepassing gebruikmaakt van databases, moet u de volgende informatie vastleggen:

  • De naam van de gegevensbron.
  • De configuratie van de verbindingsgroep.
  • De locatie van het JAR-bestand van het JDBC-stuurprogramma.

Nagaan 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 WebSphere-modules of door uw toepassingscode. U kunt enkele of elk van de volgende scenario's identificeren.

Statische alleen-lezeninhoud

Als uw toepassing momenteel met statische inhoud werkt, hebt u hiervoor een alternatieve locatie nodig. U kunt statische inhoud verplaatsen naar Azure Blob Storage en Azure CDN toevoegen voor razendsnelle downloads wereldwijd. Zie statische websitehosting in Azure Storage en quickstart: Een Azure-opslagaccount integreren met Azure CDN voor meer informatie. U kunt de statische inhoud ook rechtstreeks implementeren in een app in het Azure Spring Apps Enterprise-abonnement. Zie Statische webbestanden implementeren voor meer informatie.

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. U vindt een voorbeeldimplementatie voor gebruik in Statische inhoud uploaden en via CDN vooraf laden met Azure Functions. U kunt de statische inhoud ook rechtstreeks implementeren in een app in het Azure Spring Apps Enterprise-abonnement. Zie Statische webbestanden implementeren voor meer informatie.

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, kunt u Azure Storage koppelen aan uw App Service-bestandssysteem. Zie Inhoud uit Azure Storage leveren in App Service voor Linux voor meer informatie.

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 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 Een oplossing kiezen voor het verbinden van een on-premises netwerk 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. Raadpleeg JMS gebruiken met Azure Service Bus 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.

Nagaan of uw toepassing code bevat die specifiek is voor WebSphere-API's

Als uw toepassing gebruikmaakt van WebSphere-specifieke API's, moet u uw toepassing herstructureren om deze NIET te gebruiken. 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 entiteitsbeans of CMP-beans van het type EJB 2.x, moet u de toepassing herstructureren om deze afhankelijkheden te verwijderen.

Bepalen of de javaEE-toepassingsclientfunctie wordt gebruikt

Als u clienttoepassingen hebt die verbinding maken met uw (server)-toepassing met behulp van de functie JavaEE-toepassingsclient, moet u zowel uw clienttoepassingen als uw (server)toepassing herstructureren voor het gebruik van HTTP-API's.

Bepalen of uw toepassing code bevat die specifiek is voor het besturingssysteem

Als uw toepassing code bevat met afhankelijkheden van het hostbesturingssysteem, moet u de toepassing herstructureren om die afhankelijkheden te verwijderen. Zo moet u mogelijk de / of \ vervangen in bestandssysteempaden met File.Separator of Paths.get.

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.

Nagaan of andere JCA-connectors worden gebruikt

Als uw toepassing gebruikmaakt van JCA-connectors, moet u controleren of de JCA-connector kan worden gebruikt op JBoss EAP. Als de JCA-implementatie is gekoppeld aan WebSphere, moet u de afhankelijkheid van de JCA-connector voor uw toepassing herstructureren. Als de JCA-connector kan worden gebruikt, moet u de JAR's toevoegen aan het serverklassepad. U moet ook 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 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 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, controleert u de bestanden application.xml en ibm-application-bnd.xml en legt u hun configuraties vast.

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.

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.

Maak dat App Service-plan.

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.

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.

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. Wanneer u dat gedaan hebt, hebben we enkele aanbevelingen voor u aan de hand waarvan u de toepassing geschikter kunt maken voor de cloud.

Aanbevelingen