fb
WSO2 6 Minuten

Acht Möglichkeiten, eine CAR-Datei im WSO2 bereitzustellen

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Blog 8 1
Scrollen
Blog-8-1

Der Titel dieses Blogs klingt ein bisschen wie einer dieser hippen Artikel, in denen es immer x verschiedene Möglichkeiten gibt, reich zu werden oder so etwas. Obwohl wir sicherlich hoffen, dass WSO2 hip ist, ist dieser Blog nicht hip. In diesem Blog werden wir uns tatsächlich verschiedene Möglichkeiten ansehen, CAR-Dateien in WSO2-Produkte einzubinden.

Erste Schritte

Wir beginnen mit der Einrichtung eines sehr einfachen Pass-Through-Proxys in Developer Studio mit dem Echodienst (http://localhost:8280/services/echo) als Endpunkt. Dieser Proxy wird im 8WAYSPROJECT gespeichert und verfügt über eine Composite Application (C-app) namens 8WAYSCAR.

Blog-8-2

Daran gibt es nichts Ausgefallenes, nur dass es ein einfacher Stellvertreter ist, den wir einzusetzen können. Beim Aufruf des Proxy wird eine Nachricht an ihn gesendet. Wir nehmen dies tatsächlich als Ausgangspunkt, so dass wir nicht ins Detail gehen werden, wie wir diese Objekte erstellen oder, was noch wichtiger ist, wie wir WSO2 EI, Java und die Werkzeuge des Developer Studio installieren. Bitte lies unsere anderen Yenlo-Blogs für diese Art von Informationen.

Banner-WSO2-Community-1-4

Anfang und Ende

Es gibt einen Anfang und ein Ende für die Bereitstellung der CAR-Datei. Dieser Anfang ist so etwas wie Maven, wo ein mvn clean Install-Befehl die zu deployenden Objekte erzeugt, dies erzeugt die Zip-Datei (mit der Erweiterung CAR), die deployt wird. In diesem Blog wird der Begriff „Zip-Datei“ regelmäßig und oft verwendet, dies bezieht sich typischerweise auf die eigentliche CAR-Datei, die bereitgestellt wird oder wird. Eine CAR-Datei ist nichts anderes als eine bestimmte Sammlung von Dateien innerhalb einer ZIP-Datei, daher der Begriff ZIP-Datei.

Am Ende steht das carbonapps-Verzeichnis, in dem die Datei gespeichert wird. Zwischen dem Anfang und dem Ende gibt es acht Straßen, wie du auf dem Bild unten sehen kannst.

Wir werden dieses CAR verwenden, um es auf acht verschiedene Arten einzusetzen;

  1. Hinzufügen/Neuverteilung mit Developer Studio
  2. Exportieren mit Developer Studio in carbonapps
  3. Bauen mit mvn install und Kopieren nach carbonapps
  4. In das Verzeichnis carbonapps ablegen
  5. Hochladen über die Verwaltungsbenutzeroberfläche
  6. Erstellen und Bereitstellen mit Maven Deploy
  7. Bereitstellung über Verwaltungsdienste
  8. Bereitstellungssynchronisierung in einem Cluster-Setup

1. Hinzufügen/Neuverteilung mit Developer Studio

Wenn du einen Server in Developer Studio definierst, kannst du dem Server Fahrzeugdateien hinzufügen/entfernen. Dadurch kann insbesondere die Entwicklung von WSO2-Diensten beschleunigt werden, da dies schnelle Umsetzungen von geänderten Komponenten ermöglicht.

Blog-8-3

Die Option, eine Fahrzeugdatei neu zu verteilen, ist ebenfalls verfügbar. In diesem Fall wird tatsächlich eine neue CAR-Datei auf den Server übertragen, wobei die zuvor installierte CAR-Datei überschrieben wird (falls sie vorhanden war).

Developer Studio benutzt seine eigene Build-Prozedur, die nicht Maven-getrieben ist. Das Developer Studio packt alle im CAR-Editor ausgewählten Komponenten und erstellt und verteilt die CAR-Datei automatisch für dich.

2. Exporting using Developer Studio in carbonapps

Blog-8-4

Du kannst die Fahrzeugdatei auf den Desktop oder direkt in das carbonapps-Verzeichnis (nicht abgebildet) exportieren. Dadurch wird die Bereitstellung ausgelöst.

3. Erstellung mit mvn install und Kopieren nach carbonapps

Erstelle es mit einer mvn clean install oder der Auto-Datei und kopiere es manuell in das carbon apps Verzeichnis. Das Maven-Build wird einige Zeit in Anspruch nehmen, besonders beim ersten Mal, da es Abhängigkeiten herunterladen muss. Beachte auch, dass alle individuellen Objekte separat erstellt werden müssen.

Blog-8-5

Dies hat mit der Standard-WSO2-Projektstruktur zu tun, die erstellt wird, wenn du eine WSO2-Projektstruktur mit Hilfe des Entwicklerstudios erstellst.

4. Ablegen im Carbon Apps Verzeichnis

Das Ablegen der Datei im Verzeichnis carbon apps löst die Bereitstellung aus. In diesem Windows-Beispiel siehst du das Verzeichnis und die CAR-Datei.

Blog-8-6

Die Datei wird übernommen, in diesem Fall einfach beim Start, wie oben auf diesem Screenshot zu sehen ist.

Blog-8-7

Der Proxy ist jetzt in der Verwaltungs-Benutzeroberfläche verfügbar, wenn wir die Liste der Dienste öffnen.

Blog-8-8

5. Hochladen über die Verwaltungs-Benutzeroberfläche

Wenn wir die Zip-Datei haben, können wir sie tatsächlich auf sehr einfache Weise mit Hilfe der Management-UI der EI bereitstellen. Diese Situation tritt z.B. auf, wenn Sie eine CAR-Datei von jemand anderem erhalten und sie einfach auf dem Server bereitstellen müssen.

Wir gehen zur Verwaltungs-Benutzeroberfläche (unter der Annahme einer lokalen Bereitstellung, d.h. http://localhost:9443/carbon) und melden uns mit Admin/Admin-Berechtigungsnachweisen an. Klicke auf Add Carbon application auf der Registerkarte Main und wähle die CAR-Datei aus.

Blog-8-9

Du wirst eine Nachricht bekommen, dass sie hochgeladen wurde.

Blog-8-10

Nach etwa einer Minute ist sie tatsächlich verfügbar.

Blog-8-11

Mit delete löschen wir die CAR-Datei wieder.

Blog-8-12

Nach etwa einer Minute ist sie dann verschwunden.

Blog-8-13

6. Erstellen und Bereitstellen mit Maven Deploy

Das Erstellen der CAR Datei und die Verwendung von Maven Deploy wird diese direkt an den Server senden. Dies erfolgt kurioserweise mit dem vom Developer Studio Team des WSO2 entwickelten Plugin. Was du tun musst ist, dass du das Plugin wie folgt zur POM-Datei des CaPP hinzufügst:

<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> 

Wie du siehst, kannst du auf verschiedene Server verteilen, indem du die Server als <CarbonServers> im Plug-in angibst. Du musst nur den Pfad zum Truststore des Servers, das Passwort, die ServerUrl und den Benutzernamen und das Passwort sowie den Deploy/Undeploy-Vorgang angeben.

Damit es funktioniert, musst du der POM-Datei des CaPP zwei Parameter hinzufügen.

<properties>
              	<!--other lines are omitted -->   
              	<maven.car.deploy.skip>false</maven.car.deploy.skip>
              	<maven.deploy.skip>true</maven.deploy.skip>
  </properties>

Wir führen eine mvn cleane Bereitstellung durch, und die Fahrzeugdatei wird auf dem WSO2-Server bereitgestellt.

7. Bereitstellung über Admin-Services

Die Admin-Services sind die soap-basierten Dienste, die von der WSO2 EI selbst genutzt werden, wenn Dienste über die Management-UI, aber auch intern aufgerufen werden. Admin-Services sind standardmäßig nicht für die Nutzung durch dich verfügbar. Um sie nutzen zu können, musst du die carbon.xml ändern und den Wert von HideAdminServiceWSDLs auf false setzen.

 <!-- If this parameter is set, the ?wsdl on an admin service will not give the admin service wsdl. -->
    	<HideAdminServiceWSDLs>false</HideAdminServiceWSDLs>

Wenn du die WSO2 EI mit dem Parameter -DosgiConsole (sh integrator.sh -DosgiConsole oder integrator.bat -DosgiConsole) startest, kannst du die Admin-Dienste mit dem Befehl ‚listAdminServices‘ auflisten.

Mit dem Dienst CarbonAppUploader(?wsdl) kannst du die Fahrzeugdatei mit diesem soap-basierten Dienst hochladen. Es handelt sich um einen gesicherten Dienst (mit Basic authentication userid & password) und der Fahrzeugdatei als Anhang.

Blog-8-14
Blog-8-15

8. Einsatz-Synchronisierung in einem Cluster-Setup

Und schließlich kannst du die Einsatzsynchronisierung in einer Hazelcast-Einrichtung für Manager und Mitarbeiter durchführen. Dazu wird ein Subversion(SVN)-Repository verwendet und eine bereitgestellte Fahrzeugdatei auf dem Manager in das SVN-Repository übertragen, und die Mitarbeiter erhalten eine Nachricht, die Fahrzeugdatei durch Synchronisierung mit dem SVN-Repository abzurufen.

Diese Konfiguration oder zumindest das Prinzip des Pushens von Deployments an die Worker-Knoten kann übrigens auch mit rsync oder einer Fileshare-Struktur erfolgen. Bitte beachte die WSO2-Dokumente zur Einrichtung eines solchen Master-Worker-Setups und zur Verwendung des Bereitstellungs-Synchronisierers oder des Dateisystem-Sync-Ansatzes.

Schlussfolgerung

Es gibt zahlreiche Möglichkeiten, eine Fahrzeugdatei bereitzustellen, aber wie du sehen kannst, sind die meisten davon eigentlich Variationen eines ähnlichen Themas. Hast du noch Fragen? Zögere nicht, sie im Kommentarbereich zu stellen.