De titel van deze blog klinkt meer als die van een hip artikel over de zoveel manier waarop je snel rijk kunt worden. Natuurlijk willen we dat WSO2 hip is, maar daar gaat deze blog niet over. Waar we het wel over hebben, zijn de verschillende manieren om CAR-bestanden in WSO2-producten te plaatsen.
Waar beginnen we?
We beginnen met het aanmaken van een heel eenvoudige pass through proxy in Developer Studio waarbij we de echo service (http://localhost:8280/services/echo) als eindpunt aanhouden. Deze proxy wordt opgeslagen in 8WAYSPROJECT en heeft een Composiete Applicatie (C-app) die 8WAYSCAR heet.
Dit is allemaal nog niet zo interessant, behalve dat het een proxy is die we eenvoudig kunnen gebruiken. Het aanroepen van de proxy zal het bericht dat ernaartoe verzonden werd terugkaatsen. Dit gebruiken we als startpunt, zodat we niet in hoeven uitweiden over hoe we deze artifacts creëren of, op een hoger niveau, WSO2 EI, Java en de Developer Studio tooling installeren. Voor dit soort informatie kun je onze andere Yenlo blogs raadplegen.
Begin- en eindpunt
Er is een beginpunt en eindpunt voor het te plaatsen CAR-bestand. Het begin kan iets zijn zoals Maven waar een mvn clean install command de artifacts die moeten worden geplaatst zal opbouwen en dan een zipbestand aanmaakt (met CAR-formaat) wat vervolgens geplaatst wordt. In deze blog komt de term ‘zipbestand’ regelmatig voorbij en verwijst gewoonlijk naar het daadwerkelijke CAR-bestand dat geplaatst is of zal worden. Een CAR-bestand is niets anders dan een specifieke verzameling bestanden in een ZIP-bestand en vandaar de term ‘zipbestand’.
Het eindpunt is de carbonapps bestandmap waar het bestand opgeslagen wordt. Tussen het begin- en eindpunt zijn acht wegen die in de onderstaande afbeelding geïllustreerd staan.
We gebruiken deze CAR om het op acht verschillende manieren te plaatsen;
- Toevoegen / herplaatsen via Developer Studio
- Exporteren via Developer Studio in carbonapps
- Opbouwen met mvn install en kopiëren naar carbonapps
- Verslepen naar de carbonapps bestandsmap
- Uploaden via de Management UI
- Opbouw en plaatsen via Maven Deploy
- Plaatsen via Admin Services
- Deployment synchronisatie in een geclusterde set-up
1. Toevoegen / herplaatsen via Developer
Als je een server in Developer Studio definieert, kun je CAR-bestanden aan de server toevoegen/ervan verwijderen. Dit kan de ontwikkeling van WSO2 services enorm versnellen, omdat het herplaatsen van aangepaste componenten mogelijk maakt.
De optie om een CAR-bestand te herplaatsen is ook beschikbaar. In dat geval zal het een nieuw CAR-bestand naar de server pushen en het eerder geïnstalleerde CAR-bestand overschrijven (in het geval dat er al een CAR-bestand bestond).
Developer Studio gebruikt zijn eigen procedure die niet op Maven gebaseerd is. Het verpakt daarbij alle gekozen componenten in de CAR-editor en creëert en plaatst het CAR-bestand automatisch voor je.
2. Exporteren via Developer Studio in carbonapps
Je kunt het CAR-bestand direct via de desktop of bestandsmap in de carbonapps bestandmap exporteren (onzichtbaar). Ook dit zal de plaatsing initiëren.
3. Opbouwen met mvn install en kopiëren naar carbonapps
Je kunt een CAR-bestand opbouwen door middel van een mvn clean install en het handmatig kopiëren naar de carbon apps map. Het bouwen van Maven kost wat tijd, voornamelijk de eerste keer, omdat het de dependencies zal moeten downloaden. Onthoud ook dat alle individuele artifacts separaat gebouwd moeten worden.
Dit heeft te maken met de WSO2 projectstructuur die gemaakt wordt als je een WSO2 projectstructuur gebruikt in de Developer Studio.
4. Verslepen naar de carbonapps bestandsmap
Het verslepen van het bestand naar de carbon apps bestandsmap zal de plaatsing initiëren. In dit voorbeeld in Windows kun je de bestandsmap en het CAR-bestand zien.
Het bestand wordt in dit geval simpelweg bij het opstarten opgepikt, zoals bovenaan in deze screenshot te zien is.
Als we de lijst met diensten openen in de Management UI, zien we dat de proxy beschikbaar is.
5. Uploaden via de Management UI
Als we het zipbestand hebben, kunnen we het ook op een eenvoudige manier plaatsen via de management UI of de EI. Deze situatie komt bijvoorbeeld voor wanneer je een CAR-bestand van iemand anders ontvangt en op de server moet plaatsen.
Als we naar de management UI gaan (ervan uitgaand dat we het lokaal plaatsen is dat http://localhost:9443/carbon), kunnen we daar de inloggegevens admin/admin gebruiken. Klik op ‘Add Carbon application’ op het tabblad ‘Main’ en selecteer het CAR-bestand.
U krijgt een bericht waarin staat dat het bestand geüpload is.
Na ongeveer een minuut zal het ook echt beschikbaar zijn.
We verwijderen het CAR-bestand opnieuw door op ‘Delete’ te klikken.
En nogmaals duurt het ongeveer een minuut totdat het verdwenen is.
6. Opbouwen en plaatsen via Maven Deploy
Een CAR-bestand opbouwen en Maven Deploy gebruiken, zal het direct naar de server sturen. Dit is een hoffelijkheid van de plug-in die ontwikkeld is door het Developer Studio team van WSO2. Wat je moet doen is op de onderstaande manier een plugin toevoegen aan het POM-bestand van de CaPP:
<plugin> <groupId>org.wso2.maven</groupId> <artifactId>maven-car-deploy-plugin</artifactId> <version>1.0.0</version> <extensions>true</extensions> <configuration> <carbonServers> <CarbonServer> <trustStorePath>${basedir}/src/main/resources/security/wso2carbon.jks</trustStorePath> <trustStorePassword>wso2carbon</trustStorePassword> <trustStoreType>JKS</trustStoreType> <serverUrl>https://localhost:9443</serverUrl> <userName>admin</userName> <password>admin</password> <operation>deploy|undeploy</operation> </CarbonServer> <CarbonServer> ... </CarbonServer> </carbonServers> </configuration> </plugin>
Zoals je kunt zien, kun je het op verschillende servers plaatsen door ze als <CarbonServers> aan te wijzen in de plug-in. Wat je daarbij aangeeft is het pad naar de truststore van de server, het wachtwoord, de Server-URL, de gebruikersnaam en het wachtwoord, en tot slot de deploy / undeploy operatie.
Om het te laten werken zul je nog twee parameters toe moeten voegen aan het POM-bestand van de CaPP:
<properties> <!--other lines are omitted --> <maven.car.deploy.skip>false</maven.car.deploy.skip> <maven.deploy.skip>true</maven.deploy.skip> </properties>
Nu kun je een mvn clean deploy uitvoeren en wordt het CAR-bestand op de WSO2 server geplaatst.
7. Verzenden via Admin Services
De Admin Service is een op SOAP gebaseerde dienst die door WSO2 EI zelf gebruikt wordt als diensten door gebruik van de Management UI aangeroepen worden, maar het wordt ook intern gebruikt. Admin Services zijn standaard uitgeschakeld, daarom zul je ze eerst moeten inschakelen voordat je ze kunt gebruiken. Dit kan door de carbon.xml aan te passen en de waarde van HideAdminServiceWSDLs op ‘false’ te zetten.
<!-- If this parameter is set, the ?wsdl on an admin service will not give the admin service wsdl. --> <HideAdminServiceWSDLs>false</HideAdminServiceWSDLs>
Door de WSO2 EI met de -DosgiConsole parameter (sh integrator.sh -DosgiConsole of integrator.bat -DosgiConsole) op te starten kun je de Admin Services gebruiken na het runnen van een ‘listAdminServices’ commando.
Door de dienst CarbonAppUploader(?wsdl) te gebruiken krijg je de mogelijkheid om het CAR-bestand via deze SOAP-based service te uploaden. Dit is een beveiligde dienst (met basisbeveiliging voor userid & password) en het CAR-bestand als een bijlage.
8. Deployment synchronisatie in een geclusterde set-up
Als laatste kun je een deployment synchronisatie in een manager (worker Hazelcast setup) uitvoeren. In dat geval wordt er een Subversion (SVN)-opslagplaats gebruikt en een geplaatst CAR-bestand op de Manager naar deze SVN-opslagplaats gepushed. De workers krijgen een bericht om het CAR-bestand binnen te halen door te synchroniseren met de opslagplaats.
Deze set-up, of op zijn minst het principe van het pushen van de plaatsing naar de worker knooppunten, kan trouwens ook gedaan worden door een rsync- of fileshare-structuur. Bekijk de WSO2 documentatie over hoe je een dergelijke master-worker set-up kunt instellen en kunt gebruiken voor de deployment synchronizer of met een filesystem-sync benadering.
Conclusie
Het plaatsen van een CAR-bestand kan op tal van manieren, maar zoals je kunt zien zijn het vooral variaties op hetzelfde thema. Heb je nog vragen? Aarzel dan niet om ze hieronder in de commentaar te stellen.