Erste Schritte
Probleme mit Red Hat JBoss Fuse beheben lernen
Copyright © 2011-2015 Red Hat, Inc. and/or its affiliates.
Zusammenfassung
Kapitel 1. Red Hat JBoss Fuse Übersicht Link kopierenLink in die Zwischenablage kopiert!
Zusammenfassung
dass ein ESB eine auf Standards basierende Integrationsplattform ist, die Messaging, Webdienste, Datentransformation und intelligentes Routing verbindet, um auf zuverlässige Weise die Interaktion einer maßgeblichen Anzahl verschiedener Applikationen über weit reichende Unternehmen mit transaktionaler Integrität zu verbinden und zu koordinieren.
| ||
| --David A. Chapell | ||
1.1. Komponenten Link kopierenLink in die Zwischenablage kopiert!
1.1.1. Apache Camel Link kopierenLink in die Zwischenablage kopiert!
1.1.2. Apache CXF Link kopierenLink in die Zwischenablage kopiert!
1.1.3. Apache ActiveMQ Link kopierenLink in die Zwischenablage kopiert!
1.1.4. Fabric8 Link kopierenLink in die Zwischenablage kopiert!
1.1.5. Switchyard Link kopierenLink in die Zwischenablage kopiert!
1.2. Container Link kopierenLink in die Zwischenablage kopiert!
1.2.1. Apache Karaf Link kopierenLink in die Zwischenablage kopiert!
1.2.2. JBoss Enterprise Application Platform Link kopierenLink in die Zwischenablage kopiert!
1.3. Anwendungsfälle Link kopierenLink in die Zwischenablage kopiert!
1.3.1. »Major Widgets« Anwendungsfall Link kopierenLink in die Zwischenablage kopiert!
1.3.1.1. »Major Widgets« Einführung Link kopierenLink in die Zwischenablage kopiert!
1.3.1.1.1. »Major Widgets« Übersicht Link kopierenLink in die Zwischenablage kopiert!
1.3.1.1.2. »Major Widgets« Geschäftsmodell Link kopierenLink in die Zwischenablage kopiert!
1.3.1.2. »Major Widgets« Integrationsplan Link kopierenLink in die Zwischenablage kopiert!
Abbildung 1.1. »Major Widgets« Integrationsplan
- Einen einzelnen Eingangspunkt im Bestellbearbeitungssystem, auf den über das Web und über die ladeninternen Terminals zugegriffen werden kann
- Ein intelligentes System zur Bestelleingabe, dass webbasierte Bestellungen an die der Lieferadresse am nächsten gelegene Geschäftsniederlassung leitet
- Ein Bestellbearbeitungssystem (Instanzen laufen lokal in jedem Geschäft), das Bestellungen annimmt und bearbeitet, Kundenkonten wartet sowie das Inventar verfolgt und pflegt
- Ein master/slave Broker-Cluster, der ein zuverlässiges Messaging-Rückgrat für die Integrationslösung liefert
1.3.1.3. »Major Widgets« Implementierung Link kopierenLink in die Zwischenablage kopiert!
Abbildung 1.2. »Major Widgets« Implementierungsdiagramm
1.3.1.3.1. »Major Widgets« Komponenten Link kopierenLink in die Zwischenablage kopiert!
- RESTful-Dienst—zum Erstellen einer JAX-RS Applikation, die auf jedemTerminal der Autowerkstätten läuft (1), und Kunden die Eingabe von Bestellungen von Ersatzteilen über ein Formular zur Bestellungseingabe über das Internet ermöglicht.
- Webdienst—zum Erstellen eines JAX-WS Frontend zur Implementierung der Bestelleingabefunktionalität an jedem der geschäftsinternen Terminals, die Bestellungen von Laufkundschaft erhalten (2), die Ersatzteile direkt kaufen.
camel-cxfKomponente—eine Routing und Integrationsdienstkomponente, die einen Endpunkt für einen Eingang erstellt (3), der die Major Widgets Routing-Logik nach außen hin als einen Webdienst oder einen RESTful- Dienst offenlegt.- Routing- und Integrationsdienst—für das Erstellen von Routen (4, 6), der vom Eingangspunkt des Web/RESTful-Diensts durch das entsprechende Backend zur Bestellbearbeitung erhaltene direkte Bestellungen weiterleitet.
- Messaging Dienst—zum Erstellen eines persistenten, fehlertoleranten, geclusterten Messaging-Systems (5, 5a), das sicherstellt, dass niemals eine Bestellung wegen eines Systemfehlers verloren geht, der Message-Broker oder die Verbindungen zwischen dem Message-Broker und seinen verschiedenen Clients—dem Frontend inhaltsbasierten Router (4) und dem Backend dynamischen Router (6).
1.3.1.3.2. »Major Widgets« Integrationsfluss Link kopierenLink in die Zwischenablage kopiert!
- Laufkundschaft der AutowerkstätteSind die Teile verfügbar, so wird die Bestellung an die Backend-Bearbeitungssoftware (8) geschickt, die den Kunden darüber informiert und die Rechnung ausstellt (1), die Terminplanung für die Lieferung organisiert, das Inventar aktualisiert und Teile entsprechend neu bestellt.Sind die Teile nicht verfügbar, so wird die Bestellung an einen Prozessor eingereicht, der eine Fehlermeldung generiert, die per E-Mail (9) an den Kunden(1) geschickt wird.
- LaufkundschaftSind die Teile verfügbar so wird die Bestellung an die Backend-Bearbeitungssoftware (8) geschickt, die den Mitarbeiter informiert (2), das Inventar aktualisiert und Teile entsprechend neu bestellt. Der Mitarbeiter holt die Teile aus dem Lager und verkauft diese dem Kunden im Geschäft direkt.Sind die Teile nicht verfügbar, so wird die Bestellung an einen Prozessor eingereicht, der eine Fehlermeldung generiert, die per E-Mail (9) an die örtliche Geschäftsniederlassung (2) geschickt wird. Der Mitarbeiter informiert daraufhin den Kunden, der dann entscheiden kann, ob der Mitarbeiter in anderen Niederlassungen nach dem Teil suchen soll.
1.3.2. »Loans Consolidated« Anwendungsfall Link kopierenLink in die Zwischenablage kopiert!
1.3.2.1. »Loans Consolidated« Einführung Link kopierenLink in die Zwischenablage kopiert!
1.3.2.1.1. »Loans Consolidated« Übersicht Link kopierenLink in die Zwischenablage kopiert!
1.3.2.1.2. »Loans Consolidated« Geschäftsmodell Link kopierenLink in die Zwischenablage kopiert!
1.3.2.2. »Loans Consolidated« Integrationsplan Link kopierenLink in die Zwischenablage kopiert!
- Einen einzelnen Eingangspunkt im Bestellbearbeitungssystem, auf den entweder über einen FTP-Server oder einen Batch-Job über Nacht Dateien abgelegt werden.
- Ein intelligentes System, das XML-Dateien umleitet und bei Haus-Dateien den Wert des Hauses schätzt, ehe es an einen Messaging-Broker weiterleitet.
- Ein System, das umgebende Informationen abruft, um eine bessere Bewertung zu liefern.
- Die Möglichkeit, die Ergebnisse des Schätzwerts an die Anbieter zurückzuschicken.
1.3.2.3. »Loans Consolidated« Implementierung Link kopierenLink in die Zwischenablage kopiert!
Abbildung 1.3. »Loans Consolidated« Implementierungsdiagramm
1.3.2.3.1. »Loans Consolidated« Komponenten Link kopierenLink in die Zwischenablage kopiert!
- Routing und Integrationsdienst zum Erstellen von Routen, die dynamisch die Inhalte abgelegter XML-Dateien prüfen, um die passende Destination zu ermitteln.
- Integration mit der Google App Engine die die Anzahl der Schulen in der Umgebung ermittelt und die zur Aktualisierung des geschätzten Wertes jedes Hauses verwendet wird.
- RESTful Dienst-zur Bereitstellung aller Daten mit dem aktualisierten Schätzwert an den Anbieter.
1.3.2.3.2. »Loans Consolidated« Integrationsfluss Link kopierenLink in die Zwischenablage kopiert!
Kapitel 2. Grundlegende Konzepte für Entwickler Link kopierenLink in die Zwischenablage kopiert!
Zusammenfassung
2.1. Entwicklungsumgebung Link kopierenLink in die Zwischenablage kopiert!
2.1.1. JDK 1.7 Link kopierenLink in die Zwischenablage kopiert!
2.1.2. Apache Maven Link kopierenLink in die Zwischenablage kopiert!
2.1.3. Red Hat JBoss Fuse Tooling für Eclipse Link kopierenLink in die Zwischenablage kopiert!
2.2. Entwicklungsmodell Link kopierenLink in die Zwischenablage kopiert!
2.2.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
Abbildung 2.1. Entwicklung eines JBoss Fuse Projekts
2.2.2. Maven Link kopierenLink in die Zwischenablage kopiert!
- Maven Verzeichnis-Layout—Maven besitzt ein Standard Verzeichnis, in dem Sie Ihren Java-Code, assoziierte Ressourcen, XML-Konfigurationsdateien, Einheiten-Testcode usw. platzieren.
- Der Zugriff auf Abhängigkeiten durch das Internet—Maven besitzt die Fähigkeit, Abhängigkeiten automatisch über das Internet herunterzuladen, indem bekannte Maven Repositories heruntergeladen werden. Dies bedeutet, dass Sie Internetzugang besitzen müssen, wenn Sie Builds mit Maven durchführen. Siehe »Maven Repositories«.
2.2.3. Maven Archetypen Link kopierenLink in die Zwischenablage kopiert!
2.2.4. Maven POM-Dateien Link kopierenLink in die Zwischenablage kopiert!
pom.xml, liefert die Beschreibung davon, wie der Build Ihres Projekts erfolgt. Die Anfangsversion eines POM wird in der Regel von einem Maven-Archetyp generiert. Sie können das POM dann nach Bedarf anpassen.
- Aggregator POM—eine komplette Applikation setzt sich in der Regel aus mehreren Maven-Projekten zusammen, die in einer bestimmten Reihenfolge erstellt werden müssen. Um den Build solcher Mehrprojekt-Applikationen zu erleichtern, ermöglicht Maven Ihnen das Definieren eines Aggregator POM, das alle diese Unterprojekte in einem einzelnen Schritt erstellen kann. Weitere Informationen finden Sie unter Abschnitt 3.3, »Ein aggregiertes Maven Projekt erstellen«.
- Übergeordnete POM—in einer Applikation mit mehreren Projekten enthalten die POMs für die Unterprojekte oftmals viele identische Information. Die Wartung dieser über mehrere POM-Dateien verteilten Informationen wäre auf lange Sicht zeitraubend und anfällig für Fehler. Um die POMs besser verwaltbar zu machen, können Sie eine übergeordnete POM definieren, die alle geteilten Informationen enthält.
2.2.5. Java Code und Ressourcen Link kopierenLink in die Zwischenablage kopiert!
src/main/java für Ihren Java-Code und für die assoziierten Ressourcendateien src/main/resources. Erstellt Maven eine JAR-Datei, so kompiliert es automatisch sämtlichen Java-Code und fügt ihn dem JAR-Paket hinzu. Ebenso werden alle unter src/main/resources gefundenen Ressourcendateien in das JAR-Paket kopiert.
2.2.6. Frameworks für die Einspeisung von Abhängigkeiten Link kopierenLink in die Zwischenablage kopiert!
2.2.7. Bereitstellungs-Metadaten Link kopierenLink in die Zwischenablage kopiert!
META-INF/MANIFEST.MF- Das JAR Manifest kann für das Liefern von Bereitstellungs-Metadaten für ein OSGi Bündel verwendet werden (in Bündel-Headern).
META-INF/maven/groupId/artifactId/pom.xml- Die POM-Datei ist normalerweise in ein beliebige Maven-erstellte JAR-Datei eingebettet.
WEB-INF/web.xml- Die
web.xmlDatei ist der Standard-Deskriptor für eine als Web Archive (WAR) gepackte Applikation.
2.2.8. Administrative Metadaten Link kopierenLink in die Zwischenablage kopiert!
- Apache Karaf features—eine Funktion, die eine verwandte Collection von Paketen festlegt, die gemeinsam bereitgestellt werden können. Durch Auswahl, welche Funktionen installiert (oder deinstalliert werden sollen), kann ein Administrator leicht steuern, welche Funktionsblöcke im Container bereitgestellt werden.
- OSGi Config Admin Eigenschaften—der OSGi Config Admin Dienst legt dem Administrator zur Runtime die Konfigurationseigenschaften offen, so dass sich das Verhalten der Applikation bequem anpassen lässt (etwa durch Anpassen der TCP Port-Nummern an einem Server).
2.3. Maven-Grundlagen Link kopierenLink in die Zwischenablage kopiert!
2.3.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
2.3.2. Build von Lebenszyklus-Phasen Link kopierenLink in die Zwischenablage kopiert!
compile, test, package und install.
mvn Befehls festgelegt um anzugeben, wie weit der Build voranschreiten soll. Hier sind ein paar der am häufigsten verwendeten Maven-Befehle:
- Führen Sie den Build des Projekts durch, führen Sie die Einheitentests aus und installieren Sie das resultierende Paket im lokalen Maven Repository:
mvn install
mvn installCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Bereinigen Sie das Projekt (indem Sie temporäre und intermediäre Dateien löschen):
mvn clean
mvn cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Führen Sie den Build des Projekts und die Einheitentests durch:
mvn test
mvn testCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Build und Installation des Projekts, wobei Einheitentests übersprungen werden:
mvn install -Dmaven.test.skip=true
mvn install -Dmaven.test.skip=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Den Build des Projekts im Offline-Modus durchführen
mvn -o install
mvn -o installCopy to Clipboard Copied! Toggle word wrap Toggle overflow Der Offline-Modus (ausgewählt durch die-oOption) ist in denjenigen Fällen hilfreich, in denen Sie wissen, dass Sie bereits alle erforderlichen Abhängigkeiten in Ihrem lokalen Repository haben. Er hindert Maven daran (unnötig) auf Aktualisierungen für SNAPSHOT-Abhängigkeiten zu prüfen, so dass der Build schneller voranschreitet.
2.3.3. Maven-Verzeichnisstruktur Link kopierenLink in die Zwischenablage kopiert!
pom.xml, die den Build für dieses Maven-Projekt konfiguriert.
Beispiel 2.1. Standard Maven Verzeichnislayout
ProjectDir/src/main/java/ gespeichert und alle Ressourcendateien sollten unter ProjectDir/src/main/resources/ gespeichert werden. Insbesondere Spring XML-Dateien (die mit dem Muster *.xml übereinstimmen) sollten unter dem folgenden Verzeichnis gespeichert werden:
ProjectDir/src/main/resources/META-INF/spring/
ProjectDir/src/main/resources/META-INF/spring/
*.xml übereinstimmen), sollten unter dem folgenden Verzeichnis gespeichert werden:
ProjectDir/src/main/resources/OSGI-INF/blueprint/
ProjectDir/src/main/resources/OSGI-INF/blueprint/
2.3.4. Konvention vor Konfiguration Link kopierenLink in die Zwischenablage kopiert!
src/main/java Verzeichnis automatisch kompiliert und dem JAR hinzugefügt. Alle Ressourcen-Dateien im src/main/resources Verzeichnis werden ebenfalls dem JAR hinzugefügt.
2.3.5. Maven Packtyp Link kopierenLink in die Zwischenablage kopiert!
jar- (Default) Dieser Packtyp wird für JAR-Dateien verwendet und ist der Standard-Packtyp in Maven.
bundle- Dieser Packtyp wird für OSGi-Bündel verwendet. Um diesen Packtyp zu verwenden, müssen Sie auch den
maven-bundle-pluginin der POM-Datei konfigurieren. war- Dieser Packtyp wird für WAR-Dateien verwendet. Um diesen Packtyp zu verwenden, müssen Sie auch den
maven-war-pluginin der POM-Datei konfigurieren. pom- Beim Build mit diesem Packtyp wird die POM-Datei selbst im lokalen Maven-Repository installiert. Dieser Packtyp wird in der Regel für übergeordnete POM-Dateien verwendet.
2.3.6. Maven Artifakte Link kopierenLink in die Zwischenablage kopiert!
2.3.7. Maven Koordinaten Link kopierenLink in die Zwischenablage kopiert!
groupId:artifactId:version bestehen. Bei der Bereitstellung eines Maven Artifakts in den Red Hat JBoss Fuse Container, können Sie es mit einem Maven URI der Form mvn:groupId/artifactId/version referenzieren.
2.3.8. Maven Abhängigkeiten Link kopierenLink in die Zwischenablage kopiert!
camel-blueprint Artifakt festgelegt wird:
2.3.9. »dependency« Element Link kopierenLink in die Zwischenablage kopiert!
dependency Element deklariert eine Abhängigkeit vom Maven Artifakt mit Koordinaten org.apache.camel:camel-blueprint:6.2.1.redhat-084. Sie können so viele dependency Elemente wie Sie möchten innerhalb des dependencies Elements hinzufügen.
2.3.10. »dependency/scope« Element Link kopierenLink in die Zwischenablage kopiert!
scope-Element ist optional und liefert zusätzliche Informationen darüber, wann diese Abhängigkeit benötigt wird. Es wird standardmäßig angenommen (mit weggelassenem scope Element), dass die Abhängigkeit beim Build, dem Testen der Einheit und zur Runtime benötogt wird. Mit am Wert eingestelltem scope provided, hängt die Auswirkung davon ab, welche Art von Artifakt erstellt wird:
- OSGi Bündel—(wenn das
packagingElement von POM alsbundlefestgelegt ist), so hat dieprovidedBereichseinstellung keine Wirkung.
2.3.11. Transitive Abhängigkeiten Link kopierenLink in die Zwischenablage kopiert!
2.3.12. Maven Repositories Link kopierenLink in die Zwischenablage kopiert!
- Lokales Repository—das lokepale Rository (standardmäßig, gespeichert unter
~/.m2/repositoryauf *NIX oderC:\Documents and Settings\UserName\.m2\repositoryauf Windows) wird von Maven wie folgt verwendet:- Erster Suchort—das lokale Repository ist der erste Ort, an dem Maven nach einer Abhängigkeit sucht.
- Cache heruntergeladener Abhängigkeiten—jegliche Artifakte, die von einem entfernten Speicherort heruntergeladen wurden, sind dauerhaft im lokalen Repository gespeichert, damit sie schnell abgerufen werden können, wenn sie das nächste Mal benötigt werden.
- Speicher lokal erstellter Artifakte—bei jedem Build eines lokalen Projekts (mittels
mvn install), wird das resultierende Artifakt in Ihrem lokalen Repository gespeichert.
- Remote Repository—Maven kann auch nach Artifakten in entfernten Repositorys suchen und diese herunterladen. Standardmäßig versucht Maven automatisch ein Artifakt von entfernten Repositorys herunterzuladen, wenn es das Artifakt nicht im lokalen Repository finden kann (Sie können dieses Verhalten durch Festlegen des
-oFlag unterdrücken—zum Beispielmvn -o install). - System Repository—(nur Red Hat JBoss Fuse Container; wird nicht vom
mvnBefehlszeilen-Tool verwendet) zur Runtime kann der Red Hat JBoss Fuse Container auf Artifakte vom JBoss Fuse System Repository unterInstallDir/system/zugreifen.
2.3.13. Festlegen entfernter Repositorys Link kopierenLink in die Zwischenablage kopiert!
- Build-Zeitpunkt—um die benutzerdefinierten Repositorys, auf die zum Zeitpunkt des Build zugegriffen werden kann, anzupassen (beim Ausführen des
mvnBefehls), bearbeiten Sie die Mavensettings.xmlDatei an folgendem Speicherort:- *Nix: standardmäßiger Speicherort ist
~/.m2/settings.xml. - Windows: standardmäßiger Speicherort ist
C:\Documents and Settings\UserName\.m2\settings.xml.
- Runtime—um die zur Runtime zugänglichen entfernten Repositorys anzupassen (von innerhalb des Red Hat JBoss Fuse Containers), bearbeiten Sie die Einstellungen der relevanten Eigenschaften in
InstallDir/etc/org.ops4j.pax.url.mvn.cfg.
2.4. Frameworks für die Einspeisung von Abhängigkeiten Link kopierenLink in die Zwischenablage kopiert!
2.4.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
2.4.2. Blueprint oder Spring? Link kopierenLink in die Zwischenablage kopiert!
maven-bundle-plugin Konfiguration hinzugefügt werden.
2.4.3. Bean Registrys Link kopierenLink in die Zwischenablage kopiert!
bean() und beanRef() DSL-Befehle für den Zugriff auf die Bean-Registry des zugrundeliegenden Frameworks(s) zur Einspeisung von Abhängigkeiten verwenden.
2.4.4. Spring XML Link kopierenLink in die Zwischenablage kopiert!
- Ein Framework zur Einspeisung von Abhängigkeiten—bei Spring handelt es sich um ein klassisches Framework zur Einspeisung von Abhängigkeiten, die Ihnen die Instantiierung von Java Objekten mittels
beanElement erlauben und Beans verbinden, entweder explizit oder automatisch. Details finden Sie unter Der IoC Container im Spring Referenzhandbuch. - Eine generische XML-Konfigurationsdatei—Spring hat einen Erweiterungsmechanismus, der die Verwendung von XML-Konfigurationschemas von Drittanbietern in einer Spring XML-Datei ermöglicht. Spring verwendet den Schema-Namespace als einen Haken beim Auffinden von Erweiterungen: Es durchsucht den Klassenpfad nach einer JAR-Datei, die diese spezielle Namespace-Erweiterung implementiert. Auf diese Weise ist das Einbetten der folgenden XML-Konfigurationen innerhalb einer Spring XML-Datei möglich:
- Apache Camel Konfiguration—normalerweise eingeführt durch das
camelContextElement im Schema Namespace,http://camel.apache.org/schema/spring. - Apache CXF Konfiguration—verwendet mehrere verschiedene Schema Namespaces, je nachdem ob Sie das Bus,
http://cxf.apache.org/core, ein JAX-WS Binding,http://cxf.apache.org/jaxws, ein JAX-RS Binding,http://cxf.apache.org/jaxrsoder ein Simple Binding,http://cxf.apache.org/simplekonfigurieren. - Apache ActiveMQ configuration—in der Regel vom
brokerElement im Schema-Namespacehttp://activemq.apache.org/schema/coreeingeführt.
AnmerkungBeim Packen Ihres Projekts als ein OSGi Bündel kann der Spring XML Erweiterungsmechanismus zusätzliche Abhängigkeiten einführen. Da der Maven Bündel Plugin die Spring XML-Datei nicht scannen und Schema Namespaces automatisch auffinden kann, ist es in der Regel notwendig, die zusätzlichen Abhängigkeiten dermaven-bundle-pluginKonfiguration explizit hinzuzufügen (durch Festlegen der erforderlichen Java Pakete). - Als ein OSGi-Toolkit—bietet Spring auch Funktionen, die die Integration Ihrer Applikation mit dem OSGi Container vereinfachen (bereitgestellt durch Spring Dynamic Module). Insbesondere bietet Spring DM XML-Elemente, die den Export und die Nutzung von OSGi-Diensten leicht machen. Für Einzelheiten siehe Die Service Registry im Spring DM Referenzhandbuch.
- Ein Provider von Container-Diensten—Spring unterstützt außerdem Containerdienste wie Sicherheit, Persistenz und Transaktionen. Ehe Sie solche Dienste verwenden sollten Sie jedoch vergelichen, was vom JBoss Fuse Container selbst verfügbar ist. In einigen Fällen schichtet der JBoss Fuse Container bereits einen Dienst auf Spring (wie etwa mit dem Transaktionsdienst). In anderen Fällen wiederum bietet der JBoss Fuse Container möglicherweise eine alternative Implementierung desselben Dienstes.
2.4.5. Spring XML-Datei Speicherort Link kopierenLink in die Zwischenablage kopiert!
InstallDir/src/main/resources/META-INF/spring/*.xml
InstallDir/src/main/resources/META-INF/spring/*.xml
2.4.6. Spring XML Beispiel Link kopierenLink in die Zwischenablage kopiert!
camelContext Element, das zum Definieren von Apache Camel Routen verwendet werden könnte. Ein ausführlicheres Beispiel der Spring XML finden Sie unter »Anpassen der Web-Client Testnachricht«.
2.4.7. Blueprint XML Link kopierenLink in die Zwischenablage kopiert!
- Ein Framework zur Einspeisung—bei Blueprint handelt es sich um ein klassisches Framework zur Einspeisung von Abhängigkeiten, mit dem Sie Java Objekte mit dem
beanElement instantiieren und Beans verbinden können, entweder explizit oder automatisch. Details finden Sie unter Bereitstellen in den Container. - Eine generische XML-Konfigurationsdatei—Blueprint hat einen Erweiterungsmechanismus, der die Verwendung von XML-Konfigurationschemas von Drittanbietern in einer Blueprint XML-Datei ermöglicht. Blueprint verwendet den Schema-Namespace als einen Haken beim Auffinden von Erweiterungen: Es durchsucht den Klassenpfad nach einer JAR-Datei, die diese spezielle Namespace-Erweiterung implementiert. Auf diese Weise ist das Einbetten der folgenden XML-Konfigurationen innerhalb einer Blueprint XML-Datei möglich:
- Apache Camel configuration—in der Regel durch das
camelContextElement im Schema-Namespace,http://camel.apache.org/schema/blueprint, eingeführt. - Apache CXF Konfiguration—verwendet mehrere verschiedene Schema Namespaces, je nachdem ob Sie das Bus,
http://cxf.apache.org/blueprint, ein JAX-WS Binding,http://cxf.apache.org/blueprint/jaxws, ein JAX-RS Binding,http://cxf.apache.org/blueprint/jaxrs, oder ein Simple Binding,http://cxf.apache.org/blueprint/simplekonfigurieren. - Apache ActiveMQ configuration—in der Regel vom
brokerElement im Schema-Namespacehttp://activemq.apache.org/schema/coreeingeführt.
AnmerkungBeim Packen Ihres Projekts als ein OSGi Bündel kann der Blueprint XML-Erweiterungsmechanismus zusätzliche Abhängigkeiten einführen durch die Schema-Namespaces einführen. Blueprint löst die vom Schema Namespaces verursachten Abhängigkeiten zur Runtime automatisch auf. - Als ein OSGi-Toolkit—bietet Blueprint auch Funktionen, die die Integration Ihrer Applikation mit dem OSGi Container vereinfachen. Insbesondere bietet Blueprint XML-Elemente, die den Export und die Nutzung von OSGi-Diensten leicht machen. Für Einzelheiten siehe Bereitstellen in den Container.
2.4.8. Blueprint XML-Datei Speicherort Link kopierenLink in die Zwischenablage kopiert!
InstallDir/src/main/resources/OSGI-INF/blueprint/*.xml
InstallDir/src/main/resources/OSGI-INF/blueprint/*.xml
2.4.9. Blueprint XML Beispiel Link kopierenLink in die Zwischenablage kopiert!
camelContext Element, das zum Definieren von Apache Camel Routen verwendet werden kann. Für ein ausführlicheres Beispiel der Blueprint XML, siehe Beispiel 3.1, »Konfiguerieren der Port-Nummer in Blueprint XML«.
http://camel.apache.org/schema/blueprint unterscheidet sich vom für Apache Camel in Spring XML verwendeten Namespace. Die beiden Schemas sind jedoch fast identisch.
Kapitel 3. Erste Schritte beim Entwickeln Link kopierenLink in die Zwischenablage kopiert!
Zusammenfassung
3.1. Erstellen eines Web-Dienst-Projekts Link kopierenLink in die Zwischenablage kopiert!
3.1.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
karaf-soap-archetype Maven Archetyp, bei dem es sich um einen Befehlszeilen-Assistenten handelt, der das gesamte Projekt von Grund auf erstellt. Es wird eine Anleitung für den Build des Projekts, die Bereitstellung des Servers für den Red Hat JBoss Fuse Container und das Ausführen des Test-Client geliefert.
3.1.2. Voraussetzungen Link kopierenLink in die Zwischenablage kopiert!
fusesource Repository zu Mavens settings.xml Datei hinzufügen. Maven sucht am folgenden Standard-Speicherort nach der settings.xml Datei:
- UNIX:
home/User/.m2/settings.xml - Windows:
Documents and Settings\User\.m2\settings.xml
settings.xml Datei an diesem Speicherort, so müssen Sie eine neue settings.xml Datei erstellen. Bearbeiten Sie die settings.xml Datei durch Hinzufügen des repository Elements für fusesource, wie im folgenden Beispiel gezeigt:
3.1.3. Ein Projekt von der Befehlszeile erstellen Link kopierenLink in die Zwischenablage kopiert!
archetype:generate »Goal« aufrufen. Zuerst erstellen Sie ein Verzeichnis, das Ihre ersten Projekte enthält. Öffnen Sie eine Befehlszeile, navigieren Sie zu einem Speicherort Ihrer Wahl in Ihrem Dateisystem und erstellen Sie das get-started Verzeichnis wie folgt:
mkdir get-started cd get-started
mkdir get-started
cd get-started
archetype:generate Goal für das Aufrufen des karaf-soap-archetype Archetyps verwenden, der ein einfaches Apache CXF Demo generiert:
get-started/cxf-basic Verzeichnis befinden.
3.1.4. Anpassen der Web-Client Testnachricht Link kopierenLink in die Zwischenablage kopiert!
cxf-basic/src/test/resources/request.xml Datei, wobei Sie die xmlns:ns2="http://soap.quickstarts.fabric8.io/" Namespace-Einstellung durch xmlns:ns2="http://example.fusesource.org/" ersetzen.
request.xml Datei sollten die Inhalte wie folgt aussehen:
3.1.5. Build des Web-Dienst-Projekts Link kopierenLink in die Zwischenablage kopiert!
cd cxf-basic mvn install
cd cxf-basic
mvn install
3.1.6. Initialisieren der Container-Sicherheit Link kopierenLink in die Zwischenablage kopiert!
InstallDir/etc/users.properties Datei eine Zeile in der folgenden Form hinzufügen:
Username=Password[,RoleA][,RoleB]...
Username=Password[,RoleA][,RoleB]...
Administrator Rolle besitzen, um die Administration des Fabric zu aktivieren. Zum Beispiel:
admin=secretpassword,Administrator
admin=secretpassword,Administrator
3.1.7. Starten des Containers Link kopierenLink in die Zwischenablage kopiert!
cd InstallDir/bin ./fuse
cd InstallDir/bin
./fuse
3.1.8. Bereitstellen und Starten des WS-Servers Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Web-Dienst als ein OSGi-Bündel zu installieren und zu starten, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSHOT
JBossFuse:karaf@root> install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSHOT
org.ops4j.pax.url.mvn.localRepository Eigenschaft in der InstallDir/etc/org.ops4j.pax.url.mvn.cfg Datei anpassen müssen, ehe Sie das mvn: Schema für den Zugriff auf Maven Artifakte verwenden können.
Bundle ID: 265
Bundle ID: 265
3.1.9. Überprüfen Sie, ob das Bündel gestartet wurde Link kopierenLink in die Zwischenablage kopiert!
list ein, der Ihnen den Status aller im Container installierter Bündel liefert:
JBossFuse:karaf@root> list
JBossFuse:karaf@root> list
[ 265] [Installed ] [ ] [ ] [ 80] JBoss Fuse Quickstart: soap (1.0.0.SNAPSHOT)
[ 265] [Installed ] [ ] [ ] [ 80] JBoss Fuse Quickstart: soap (1.0.0.SNAPSHOT)
list Befehl nur Bündel mit einem Startlevel ab 50 an (was die meisten Systembündel ausschließt).
3.1.10. Ausführen des WS-Client Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt beinhaltet auch einen einfachen WS-Client, der zum Testen des bereitgestellten Webdienstes verwendet werden kann. Navigieren Sie in einer Befehlszeile in das cxf-basic Verzeichnis und führen Sie den einfachen WS-Client wie folgt aus:
cd get-started/cxf-basic mvn -Ptest
cd get-started/cxf-basic
mvn -Ptest
Running org.fusesource.example.SoapTest the response is ====> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHiResponse xmlns:ns2="http://example.fusesource.org/"><return>Hello John Doe</return></ns2:sayHiResponse></soap:Body></soap:Envelope> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.184 sec - in org.fusesource.example.SoapTest
Running org.fusesource.example.SoapTest
the response is ====>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHiResponse xmlns:ns2="http://example.fusesource.org/"><return>Hello John Doe</return></ns2:sayHiResponse></soap:Body></soap:Envelope>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.184 sec - in org.fusesource.example.SoapTest
3.1.11. Fehlerbehandlung Link kopierenLink in die Zwischenablage kopiert!
http://localhost:8181/cxf
http://localhost:8181/cxf
http://localhost:8181/cxf/HelloWorld?wsdl
http://localhost:8181/cxf/HelloWorld?wsdl
3.2. Ein Router-Projekt erstellen Link kopierenLink in die Zwischenablage kopiert!
3.2.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
karaf-camel-cbr-archetype Maven-Archetyp.
3.2.2. Voraussetzungen Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt ab und erfordert, dass Sie das cxf-basic Projekt bereits wie in Abschnitt 3.1, »Erstellen eines Web-Dienst-Projekts« beschrieben generiert und erstellt haben.
3.2.3. Ein Projekt von der Befehlszeile erstellen Link kopierenLink in die Zwischenablage kopiert!
get-started Verzeichnis. Sie können jetzt das archetype:generate Ziel für das Aufrufen des karaf-camel-cbr-archetype Archetyps verwenden, der eine einfache Apache Camel Demonstration generiert:
get-started/camel-basic Verzeichnis befinden.
3.2.4. Hinzufügen der benötigten Maven Abhängigkeit Link kopierenLink in die Zwischenablage kopiert!
camel-jetty Artifakt hinzufügen, damit die JAR-Dateien dem Klassenpfad hinzugefügt werden. Um die Abhängigkeit hinzuzufügen, bearbeiten Sie die camel-basic/pom.xml Datei und fügen Sie die folgende, gekennzeichnete Abhängigkeit als dem dependencies Element untergeordnet hinzu:
3.2.5. Bearbeiten der Route Link kopierenLink in die Zwischenablage kopiert!
camel-basic/src/main/resources/OSGI-INF/blueprint/cbr.xml. Entfernen Sie das vorhandene camelContext Element und ersetzen Sie es durch das camelContext Element, das im folgnden Beispiel gekennzeichnet ist:
from Element definiert einen HTTP-Server-Port, der auf TCP Port 8282 horcht. Das to Element definiert einen HTTP-Client-Endpunkt, der eine Verbindung mit dem echten Webdienst herzustellen versucht, der auf TCP Port 8181 horcht. Um die Route interessanter zu gestalten, fügen wir ein delay Element hinzu, das eine Verzögerung von fünf Sekunden (5000 Millisekunden) bei allen Anfragen bewirkt, die die Route passieren.
3.2.6. Ändern des Port im Web-Client Test Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt bearbeiten:
cxf-basic/src/test/java/org/fusesource/example/SoapTest.java
cxf-basic/src/test/java/org/fusesource/example/SoapTest.java
SoapTest.java Datei in einem Texteditor Ihrer Wahl und suchen Sie die folgende Zeile:
URLConnection connection = new URL("http://localhost:8181/cxf/HelloWorld").openConnection();
URLConnection connection = new URL("http://localhost:8181/cxf/HelloWorld").openConnection();
URLConnection connection = new URL("http://localhost:8282/cxf/HelloWorld").openConnection();
URLConnection connection = new URL("http://localhost:8282/cxf/HelloWorld").openConnection();
3.2.7. Führen Sie den Build des Router-Projekts durch Link kopierenLink in die Zwischenablage kopiert!
cd camel-basic mvn install
cd camel-basic
mvn install
3.2.8. Bereitstellen und Starten der Route Link kopierenLink in die Zwischenablage kopiert!
camel-basic Route als ein OSGi-Bündel zu installieren und zu starten, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> install -s mvn:org.fusesource.example/camel-basic/1.0-SNAPSHOT
JBossFuse:karaf@root> install -s mvn:org.fusesource.example/camel-basic/1.0-SNAPSHOT
Bundle ID: 230
Bundle ID: 230
3.2.9. Testen der Route mit dem WS-Client Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt beinhaltet einen einfachen WS-Client, der zum Testen der bereitgestellten Route und des Webdienstes verwendet werden kann. Navigieren Sie in einer Befehlszeile in das cxf-basic Verzeichnis und führen Sie den einfachen WS-Client wie folgt aus:
cd ../cxf-basic mvn -Ptest
cd ../cxf-basic
mvn -Ptest
------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.fusesource.example.SoapTest
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.fusesource.example.SoapTest
the response is ====> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHiResponse xmlns:ns2="http://example.fusesource.org/"><return>Hello John Doe</return></ns2:sayHiResponse></soap:Body></soap:Envelope> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.153 sec - in org.fusesource.example.SoapTest
the response is ====>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHiResponse xmlns:ns2="http://example.fusesource.org/"><return>Hello John Doe</return></ns2:sayHiResponse></soap:Body></soap:Envelope>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.153 sec - in org.fusesource.example.SoapTest
3.3. Ein aggregiertes Maven Projekt erstellen Link kopierenLink in die Zwischenablage kopiert!
3.3.1. Aggregiertes POM Link kopierenLink in die Zwischenablage kopiert!
3.3.2. Übergeordnete POM Link kopierenLink in die Zwischenablage kopiert!
3.3.3. Empfohlene Vorgehensweise Link kopierenLink in die Zwischenablage kopiert!
3.3.4. Ein aggregiertes POM erstellen Link kopierenLink in die Zwischenablage kopiert!
pom.xml Datei im get-started Verzeichnis zu erstellen und fügen Sie der Datei die folgenden Inhalte hinzu:
groupId, artifactId und version definiert sein, um dieses Artifakt eindeutig zu identifizieren. Das packaging aber muss auf pom eingestellt sein. Der Schlüsselteil des POM ist das modules Element, das eine Liste zu erstellender Maven Unterprojekte und die Reihenfolge in der dieses zu erstellen sind definiert. Der Inhalt jedes module Elements ist der relative Pfad eines Verzeichnisses, der ein Maven Projekt enthält.
3.3.5. Build mit einem aggregierten POM Link kopierenLink in die Zwischenablage kopiert!
cd get-started mvn install
cd get-started
mvn install
3.4. Definieren eines Feature für die Applikation Link kopierenLink in die Zwischenablage kopiert!
3.4.1. Warum brauchen Sie ein Feature? Link kopierenLink in die Zwischenablage kopiert!
3.4.2. Was gehört in ein Feature Link kopierenLink in die Zwischenablage kopiert!
3.4.3. Bereitstellungsoptionen Link kopierenLink in die Zwischenablage kopiert!
- Bereitstellung während des Betriebs—die einfachste Bereitstellungsoption; legen Sie einfach die XML-Features-Datei direkt im Hot-Deploy-Verzeichnis zur Bereitstellung während des Betriebs ab,
InstallDir/deploy. - Hinzufügen einer Repository URL—Sie können dem Red Hat JBoss Fuse Container mitteilen, wo er die Features Repository Datei findet, indem Sie den
features:addUrlKonsolenbefehl verwenden (siehe Hinzufügen der lokalen Repository URL zum Features-Dienst). Sie können das Feature dann zu jeder Zeit mit demfeatures:installKonsolenbefehl installieren. - Durch ein Fuse Fabric Profil—Sie können die Managementkonsole für die Bereitstellung eines Feature in einem Fuse Fabric Profil verwenden.
3.4.4. Features und Fuse Fabric Link kopierenLink in die Zwischenablage kopiert!
3.4.5. Erstellen eines benutzerdefinierten Features Repository Link kopierenLink in die Zwischenablage kopiert!
get-started Projektverzeichnis erstellen Sie alle Verzeichnisse im folgenden Pfad:
get-started/features/src/main/resources/
get-started/features/src/main/resources/
get-started/features/src/main/resources Verzeichnis einen Texteditor, um die get-started.xml Datei zu erstellen und fügen Sie die folgenden Inhalte hinzu:
get-started/features/ Verzeichnis einen Texteditor, um die Maven POM-Datei pom.xml zu erstellen und fügen Sie die folgenden Inhalte hinzu:
3.4.6. Installation des Features Repository Link kopierenLink in die Zwischenablage kopiert!
get-started/features Verzeichnis und geben Sie den folgenden Befehl ein:
cd features mvn install
cd features
mvn install
3.4.7. Bereitstellen des benutzerdefinierten Feature Link kopierenLink in die Zwischenablage kopiert!
get-started-basic Feature im Container bereitzustellen, führen Sie die folgenden Schritte durch:
- Sind die
cxf-basicandcamel-basicBündel bereits im JBoss Fuse Container installiert, so müssen Sie diese zuerst deinstallieren. Finden Sie mit demlistBefehl die Bündel-IDs für diecxf-basicundcamel-basicBündel und deinstallieren Sie diese dann beide mittels Konsolenbefehluninstall BundleID. - Ehe Sie von einem Features Repository auf Features zugreifen können, müssen Sie dem Container mitteilen, wo das Features Repository zu finden ist. Fügen Sie dem Container die URL des Features Repository mit dem folgenden Konsolenbefehl hinzu:
JBossFuse:karaf@root> features:addurl mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features
JBossFuse:karaf@root> features:addurl mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/featuresCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sie können prüfen, ob der Container von den neuen Features weiß, indem Sie den Konsolenbefehlfeatures:listeingeben. Falls nötig, können Sie denfeatures:refreshurlKonsolenbefehl eingeben, der den Container zum erneuten Lesen seiner Features Repositorys zwingt. - Um die
get-started-basicFunktion zu installieren, geben Sie den folgenden Konsolenbefehl ein:JBossFuse:karaf@root> features:install get-started-basic
JBossFuse:karaf@root> features:install get-started-basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Nachdem Sie ein paar Sekunden auf den Start der Bündel gewartet haben, können Sie die Applikation wie in »Testen der Route mit dem WS-Client« beschrieben testen.
- Um die Funktion zu deinstallieren, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> features:uninstall get-started-basic
JBossFuse:karaf@root> features:uninstall get-started-basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. Konfiguration der Applikation Link kopierenLink in die Zwischenablage kopiert!
3.5.1. OSGi Config Admin Dienst Link kopierenLink in die Zwischenablage kopiert!
- Persistent ID
- Eine persistente ID (PID) identifiziert eine Gruppe verwandter Eigenschaften. Eine PID ist normalerweise in demselben Format wie ein Java-Paketname geschrieben. Die
org.ops4j.pax.webPID zum Beispiel konfiguriert den standardmäßigen Jetty Web server des Red Hat JBoss Fuse Containers. - Eigenschaften
- Eine Eigenschaft ist ein Name-Wert-Paar, das immer zu einer bestimmten PID gehört.
3.5.2. Einstellen der Konfigurationseigenschaften Link kopierenLink in die Zwischenablage kopiert!
- Für eine bestimmt PID, PersistentID, können Sie eine Textdatei im
InstallDir/etcVerzeichnis erstellen, das der folgenden Namengebungskonvention folgt:InstallDir/etc/PersistentID.cfg
InstallDir/etc/PersistentID.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sie können jetzt die zu dieser PID gehörenden Eigenschaften einstellen, indem Sie diese Datei bearbeiten und Einträge in der folgenden Form hinzufügen:Property=Value
Property=ValueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Fuse Fabric unterstützt einen weiteren Mechanismus zur Anpassung von OSGi Config Admin Eigenschaften. Sie stellen in Fuse Fabric OSGi Config Admin Eigenschaften in einem Fabric Profil ein (wobei ein Profil die für die Bereitstellung einer Applikation erforderlichen Daten beinhaltet). Es gibt zwei alternative Wege, um diese Konfigurationseinstellungen in einem Profil zu bearbeiten:
- Verwendung der Management-Konsole
- Verwendung des
fabric:profile-editBefehls in einer Container-Konsole (siehe Abschnitt 4.2.2, »Fabric Profile erstellen«).
3.5.3. Ersetzen Sie TCP-Port durch einen Platzhalter für die Eigenschaft Link kopierenLink in die Zwischenablage kopiert!
HelloWorld Web-Dienst vom cxf-basic Projekt verwendeten TCP-Port ansehen. Durch Bearbeiten der Blueprint XML Datei, die diesen Webdienst definiert, können Sie den TCP-Port des Webdienstes durch den OSGi Config Admin Dienst anpassbar machen.
3.5.4. Blueprint XML Beispiel Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt werden alle XML-Dateien vom folgenden Speicherort wie Blueprint XML-Dateien behandelt (dem standardmäßigen Maven Speicherort für Blueprint XML-Dateien):
cxf-basic/src/main/resources/OSGI-INF/blueprint/*.xml
cxf-basic/src/main/resources/OSGI-INF/blueprint/*.xml
blueprint.xml Datei vom vorherigen Verzeichnis und fügen Sie die in Beispiel 3.1, »Konfiguerieren der Port-Nummer in Blueprint XML« dargestellten XML-Inhalte hinzu.
Beispiel 3.1. Konfiguerieren der Port-Nummer in Blueprint XML
cm Namespace, sind die Hauptänderungen wie folgt:
- Das
cm:property-placeholderBean kontaktiert den OSGi Config Admin Dienst und ruft alle Eigenschaft-Einstellungen von derorg.fusesource.example.get.startedPID ab. Die Schlüssel-Wert-Paare imcm:default-properties/cm:propertyElement legen Standardwerte für die Eigenschaften fest (die außer Kraft gesetzt werden, wenn entsprechende Einstellungen vom OSGi Config Admin Dienst abgerufen werden können). - Der
${portNumber}Platzhalter wird zum Festlegen der TCP Port-Nummer verwendet, die vomHelloWorldWebdienst benutzt wird.
maven-bundle-plugin in der pom.xml Datei des Projekts den Platzhalter * in den im Import-Package Element gelisteten Paketen beinhalten (ist das Import-Package Element nicht vorhanden, so wird der Platzhalter standardmäßig eingesetzt). Andernfalls wird Ihnen der folgende Fehler gemeldet: Unresolved references to [org.osgi.service.blueprint] by class(es) on the Bundle-Classpath[Jar:dot]: [].
3.5.5. Bereitstellung der konfigurierbaren Applikation Link kopierenLink in die Zwischenablage kopiert!
cxf-basic Projekt bereitzustellen, führen Sie die folgenden Schritte durch:
- Bearbeiten Sie die Blueprint XML Datei
blueprint.xml, um den OSGi Config Admin Dienst, wie in Beispiel 3.1, »Konfiguerieren der Port-Nummer in Blueprint XML« beschrieben, zu integrieren. - Führen Sie einen erneuten Build des
cxf-basicProjekts mit Maven durch. Öffnen Sie eine Befehlszeile, ändern Sie das Verzeichnis in dasget-started/cxf-basicVerzeichnis und geben Sie den folgenden Maven Befehl ein:mvn clean install
mvn clean installCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Erstellen Sie die Konfigurationdatei im
etc/Verzeichnis Ihrer Red Hat JBoss Fuse Installation:InstallDir/etc/org.fusesource.example.get.started.cfg
InstallDir/etc/org.fusesource.example.get.started.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bearbeiten Sie dieorg.fusesource.example.get.started.cfgDatei mit einem Texteditor und fügen Sie die folgenden Inhalte hinzu:portNumber=8182
portNumber=8182Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Wenn Sie die
get-started-basicFunktion zuvor bereitgestellt haben (wie in Abschnitt 3.4, »Definieren eines Feature für die Applikation« beschrieben), deinstallieren Sie sie jetzt:JBossFuse:karaf@root> features:uninstall get-started-basic
JBossFuse:karaf@root> features:uninstall get-started-basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Stellen Sie das
get-started-cxfFeature bereit, indem Sie den folgenden Konsolenbefehl eingeben:JBossFuse:karaf@root> features:install get-started-cxf
JBossFuse:karaf@root> features:install get-started-cxfCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Nachdem Sie ein paar Sekunden auf den Start der Bündel gewartet haben, können Sie den vom HelloWorld-Dienst verwendeten Port durch Eingabe des folgenden Konsolenbefehls überprüfen:
JBossFuse:karaf@root> cxf:list-endpoints Name State Address BusID [FabricResource ] [Started ] [/fabric8 ] [io.fabric8.fabric-rest-cxf250714502 ] [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8182/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf1456001875]
JBossFuse:karaf@root> cxf:list-endpoints Name State Address BusID [FabricResource ] [Started ] [/fabric8 ] [io.fabric8.fabric-rest-cxf250714502 ] [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8182/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf1456001875]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sie sehen, dass der HelloWorld-Dienst an Port8182horcht. - Falls Sie den Web-Client-Test gegen diesen Webdienst durchführen möchten, so müssen Sie die vom Client verwendete URL anpassen. Öffnen Sie mit einem Texteditor die
SoapTest.javaDatei vomcxf-basic/src/test/java/org/fusesource/exampleVerzeichnis und ändern Sie die Verbindungs-URL wie im folgenden Fragment markiert:URLConnection connection = new URL("http://localhost:8182/cxf/HelloWorld").openConnection();URLConnection connection = new URL("http://localhost:8182/cxf/HelloWorld").openConnection();Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Sie können die Applikation dann testen, indem Sie eine Befehlszeile öffnen, ins Verzeichnis
get-started/cxf-basicwechseln und den folgenden Befehl eingeben:mvn -Ptest
mvn -PtestCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Um die Funktion zu deinstallieren, geben Sie den folgenden Konsolenbefehl ein:
features:uninstall get-started-cxf
features:uninstall get-started-cxfCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. Fehlerbehandlung Link kopierenLink in die Zwischenablage kopiert!
3.6.1. Überprüfen des Status eines bereitgestellten Bündels Link kopierenLink in die Zwischenablage kopiert!
osgi:list Konsolenbefehl überprüfen. Zum Beispiel:
JBossFuse:karaf@root> osgi:list
JBossFuse:karaf@root> osgi:list
cxf-basic Bündel besitzt zum Beispiel eine Statuszeile wie folgende:
[ 232] [Active ] [ ] [Started] [ 60]
Apache ServiceMix :: CXF Code First OSGi Bundle (1.0.0.SNAPSHOT)
[ 232] [Active ] [ ] [Started] [ 60]
Apache ServiceMix :: CXF Code First OSGi Bundle (1.0.0.SNAPSHOT)
Installed, Resolved oder Active). Ein erfolgreich installiertes und gestartetes Bündel besitzt den Status Active. Enthält das Bündel eine Blueprint XML-Datei, so gibt die dritte Spalte Auskunft darüber, ob der Blueprint Kontext erfolgreich Created (erstellt) wurde oder nicht. Enthält das Bündel eine Spring XML-Datei, so informiert die vierte Spalte darüber, ob der Spring-Kontext erfolgreich Started (gestartet) wurde oder nicht.
3.6.2. Protokollierung Link kopierenLink in die Zwischenablage kopiert!
log:display Konsolenbefehl ein. Sie sollten dort ein »Stack Trace« für das fehlgeschlagene Bündel im Protokoll sehen.
log:set Konsolenbefehl ganz einfach ändern. Zum Beispiel:
JBossFuse:karaf@root> log:set DEBUG
JBossFuse:karaf@root> log:set DEBUG
3.6.3. Erneute Bereitstellung von Bündeln mit dev:watch Link kopierenLink in die Zwischenablage kopiert!
dev:watch Befehl hierfür am besten. Wenn Sie zum Beispiel das cxf-basic Bündel bereits bereitgestellt haben und es die Bündel ID 232 besitzt, so können Sie die Runtime mit dem folgenden Konsolenbefehl anweisen, das Bündel zu beobachten:
JBossFuse:karaf@root> dev:watch 232 Watched URLs/IDs: 232
JBossFuse:karaf@root> dev:watch 232
Watched URLs/IDs:
232
cd cxf-basic mvn clean install
cd cxf-basic
mvn clean install
[Watch] Updating watched bundle: cxf-basic (1.0.0.SNAPSHOT)
[Watch] Updating watched bundle: cxf-basic (1.0.0.SNAPSHOT)
Kapitel 4. Erste Schritte bei der Bereitstellung Link kopierenLink in die Zwischenablage kopiert!
Zusammenfassung
4.1. Skalierbare Bereitstellung mit Fuse Fabric Link kopierenLink in die Zwischenablage kopiert!
4.1.1. Warum Fuse Fabric? Link kopierenLink in die Zwischenablage kopiert!
- Überwachen des Status aller Container im Netzwerk
- Starten und Stoppen von entfernten Containern
- Provisionieren von entfernten Containern, damit diese bestimmte Applikationen ausführen
- Upgrade von Applikationen und Bereitstellen von Patches in einem Live System
- Schneller Start und Provisionierung neuer Container—um zum Beispiel einer höheren Systemauslastung gerecht zu werden
4.1.2. Ein Beispiel Fabric Link kopierenLink in die Zwischenablage kopiert!
Abbildung 4.1. Containers in einem Fabric
4.1.3. Fabric Link kopierenLink in die Zwischenablage kopiert!
4.1.4. Fabric Ensemble Link kopierenLink in die Zwischenablage kopiert!
4.1.5. Fabric Server Link kopierenLink in die Zwischenablage kopiert!
4.1.6. Fabric Container Link kopierenLink in die Zwischenablage kopiert!
4.1.7. Profil Link kopierenLink in die Zwischenablage kopiert!
osgi:install oder features:install) nach wie vor möglich ist, sind diese Änderungen nicht dauerhaft. Sobald Sie den Container neu starten oder dessen Inhalte neu laden, ersetzt der Fabric Agent die vorhandenen Inhalte des Containers durch die für die bereitgestellten Profile festgelegten Inhalte.
4.2. Bereitstellen an einen Fabric Link kopierenLink in die Zwischenablage kopiert!
4.2.1. Einen Fabric erstellen Link kopierenLink in die Zwischenablage kopiert!
4.2.1.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
Abbildung 4.2. Ein Beispiel-Fabric mit untergeordneten Containern
4.2.1.2. Fabric Server Link kopierenLink in die Zwischenablage kopiert!
4.2.1.3. Untergeordnete Container Link kopierenLink in die Zwischenablage kopiert!
InstallDir/instances Verzeichnis gespeichert.
4.2.1.4. Schritte beim Erstellen des Fabric Link kopierenLink in die Zwischenablage kopiert!
- (Optional) Passen Sie den Namen des »root« Containers an, indem Sie die
InstallDir/etc/system.propertiesDatei bearbeiten und einen anderen Namen für diese Eigenschaft festlegen:karaf.name=root
karaf.name=rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow AnmerkungBeim ersten Container in Ihrem Fabric ist dieser Schritt optional. Wenn Sie jedoch zu einem späteren Zeitpunkt einen »root« Container mit dem Fabric verbinden wollen, so müssen Sie den Namen des neuen Containers anpassen, damit es nicht zu Konflikten mit bestehenden »root« Containern im Fabric kommt. - Um den ersten Fabric Container zu erstellen, der als Basis für den neuen Fabric dient, geben Sie den folgenden Konsolebefehl ein:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Der aktuelle Container, der standardmäßig den Namenrootträgt, wird zu einem Fabric Server mit einem installierten Registry-Dienst. Dies ist anfangs der einzige Container im Fabric. Die--new-user,--new-user-passwordund--new-user-roleOptionen legen die Berechtigungen für einen neuen Administrator-Benutzer fest. Das Zookeeper Passwort wird zur Sicherung vertraulicher Daten im Fabric Registry-Dienst verwendet (alle Knoten unter/fabric).AnmerkungSie werden meist nicht zur Eingabe des Zookeeper Passworts aufgefordert, wenn Sie auf den Registry-Dienst zugreifen, weil es in der aktuellen Sitzung zwischengespeichert wird. Wenn Sie jedoch einen Container mit einem Fabric verbinden, so müssen Sie das Zookeeper Passwort des Fabric eingeben.AnmerkungEs wird empfohlen, dass Sie dem Rechner, der als Host für einen Fabric Server fungiert, eine statische IP-Adresse zuweisen und dass Sie diesen Port explizit mit den--resolverund--manual-ipOptionen festlegen, wenn Sie den Fabric erstellen. Für einfache Tests und Demonstrationen können Sie die Loopback-Adresse127.0.0.1festlegen (wie hier). Weitere Informationen finden Sie im Kapitel »Einen neuen Fabric erstellen« im »Fabric Handbuch«. - Erstellen Sie zwei untergeordnete Container. Heißt Ihr root-Container
root, so geben Sie den folgenden Konsolenbefehl ein:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Falls Sie zur Eingabe eines JMX Benutzernamens und Passworts aufgefordert werden, so geben Sie die Kombination von Benutzernamen/Passwort ein, die Sie in Schritt 2 definiert haben. - Rufen Sie mit dem
fabric:container-listBefehl eine Liste aller Container in Ihrem neuen Fabric auf. Die Liste sollte ungefähr so aussehen:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.1.5. Herunterfahren der Container Link kopierenLink in die Zwischenablage kopiert!
fabric:container-stop Befehl. Um zum Beispiel den aktuellen Fabric komplett zu stoppen, geben Sie diese Konsolenbefehle ein:
JBossFuse:karaf@root> fabric:container-stop child JBossFuse:karaf@root> fabric:container-stop child2 JBossFuse:karaf@root> shutdown
JBossFuse:karaf@root> fabric:container-stop child
JBossFuse:karaf@root> fabric:container-stop child2
JBossFuse:karaf@root> shutdown
fabric:container-start Konsolenbefehl neu starten.
4.2.2. Fabric Profile erstellen Link kopierenLink in die Zwischenablage kopiert!
4.2.2.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
4.2.2.2. Inhalte eines Profils Link kopierenLink in die Zwischenablage kopiert!
- Die URL Speicherorte von Features Repositorys
- Eine Liste der zu installierenden Funktionen
- Eine Liste zu installierender Bündel (oder - allgemeiner - jedes passende JAR-Paket—einschließlich OSGi Bündel, Fuse Application Bündel und WAR-Dateien)
- Eine Sammlung von Konfigurationseinstellungen für den OSGi Config Admin Dienst
- Java Systemeigenschaften, die den Apache Karaf Container beeinflussen
etc/system.properties) - Java Systemeigenschaften, die installierte Bündel beeinflussen
etc/system.properties)
4.2.2.3. Basisprofil Link kopierenLink in die Zwischenablage kopiert!
4.2.2.4. Ein Basisprofil erstellen Link kopierenLink in die Zwischenablage kopiert!
gs-cxf-base Profil zu erstellen, gehen Sie wie folgt vor:
- Erstellen Sie das
gs-cxf-baseProfil durch Eingabe des Konsolenbefehls:JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-base
JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-baseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Fügen Sie das
get-startedFeatures Repository (siehe Ein Feature für die Applikation definieren) mit dem folgenden Konsolenbefehl demgs-cxf-baseProfil hinzu:JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-base
JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-baseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Fügen Sie jetzt das
cxf-http-jettyFeature (das Support für den HTTP-Jetty-Endpunkt bietet) mit dem folgenden Konsolenbefehl demgs-cxf-baseProfil hinzu:JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-base
JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-baseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Fügen Sie jetzt das
get-started-cxfFeature (das den Web-Dienst Beispielserver liefert) mit dem folgenden Konsolenbefehl demgs-cxf-baseProfil hinzu:JBossFuse:karaf@root> profile-edit --feature get-started-cxf gs-cxf-base
JBossFuse:karaf@root> profile-edit --feature get-started-cxf gs-cxf-baseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2.5. Erstellen abgeleiteter Profile Link kopierenLink in die Zwischenablage kopiert!
gs-cxf-01 und gs-cxf-02, die unterschiedliche TCP-Ports für den Webdienst konfigurieren. Hierzu gehen Sie wie folgt vor:
- Erstellen Sie das
gs-cxf-01Profil—welches sich vongs-cxf-baseableitet—indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01
JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Erstellen Sie das
gs-cxf-02Profil—welches sich vongs-cxf-baseableitet—indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02
JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Stellen Sie im
gs-cxf-01Profil dieportNumberKonfigurationseigenschaft auf 8185 ein, indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8185 gs-cxf-01
JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8185 gs-cxf-01Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Stellen Sie im
gs-cxf-02Profil dieportNumberKonfigurationseigenschaft auf 8186 ein, indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8186 gs-cxf-02
JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8186 gs-cxf-02Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. Bereitstellen der Profile Link kopierenLink in die Zwischenablage kopiert!
4.2.3.1. Bereitstellen der Profile an untergeordnete Container Link kopierenLink in die Zwischenablage kopiert!
- Stellen Sie das
gs-cxf-01Profil imchildContainer durch Eingeben dieses Konsolenbefehls bereit:JBossFuse:karaf@root> fabric:container-change-profile child gs-cxf-01
JBossFuse:karaf@root> fabric:container-change-profile child gs-cxf-01Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Stellen Sie das
gs-cxf-02Profil imchild2Container durch Eingeben dieses Konsolenbefehls bereit:JBossFuse:karaf@root> fabric:container-change-profile child2 gs-cxf-02
JBossFuse:karaf@root> fabric:container-change-profile child2 gs-cxf-02Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3.2. Überprüfen Sie, ob der Webdienst läuft Link kopierenLink in die Zwischenablage kopiert!
child Container gestartet wurde, gehen Sie wie folgt vor:
- Falls der untergeordnete Container nicht bereits läuft, starten Sie diesen durch Eingabe des folgenden Befehls:
JBossFuse:karaf@root> container-start child
JBossFuse:karaf@root> container-start childCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Warten Sie, bis der Startvorgang des
childContainers abgeschlossen ist. Sie können den Provisioning-Status mit demwatchBefehl wie folgt beobachten:JBossFuse:karaf@root> watch container-list
JBossFuse:karaf@root> watch container-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Stellen Sie wie folgt eine Verbindung zum untergeordneten Container her:
JBossFuse:karaf@root> container-connect child
JBossFuse:karaf@root> container-connect childCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Nach der Verbindung mit dem
childContainer, führen Sie eine Auflistung der aktiven CXF-Endpunkte durch, indem Sie den folgenden Befehl eingeben:JBossFuse:admin@child> cxf:list-endpoints Name State Address BusID [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8185/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf481246446] [FabricResource ] [Started ] [/fabric8 ] [io.fabric8.fabric-rest-cxf1093764918 ]
JBossFuse:admin@child> cxf:list-endpoints Name State Address BusID [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8185/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf481246446] [FabricResource ] [Started ] [/fabric8 ] [io.fabric8.fabric-rest-cxf1093764918 ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. Ein Profil aktualisieren Link kopierenLink in die Zwischenablage kopiert!
4.2.4.1. Atomic Container Upgrades Link kopierenLink in die Zwischenablage kopiert!
4.2.4.2. Profil Versionierung Link kopierenLink in die Zwischenablage kopiert!
4.2.4.3. Upgrade auf ein neues Profil Link kopierenLink in die Zwischenablage kopiert!
gs-cxf-01 Profil zu bearbeiten, wenn es bereitgestellt ist und in einem Container läuft, gehen Sie wie folgt vor:
- Erstellen Sie eine neue Version 1.1, die die ausstehenden Änderungen enthält, indem Sie den folgenden Konsolenbefehl eingeben:
JBossFuse:karaf@root> fabric:version-create Created version: 1.1 as copy of: 1.0
JBossFuse:karaf@root> fabric:version-create Created version: 1.1 as copy of: 1.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die neue Version wird mit einer Kopie aller Profile von Version 1.0 initialisiert. - Verwenden Sie den
fabric:profile-editBefehl, um dieportNumbervongs-cxf-01in den Wert 8187 zu ändern, indem Sie den folgenden Befehl eingeben:JBossFuse:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1
JBossFuse:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Denken Sie daran, Version1.1beimfabric:profile-editBefehl festzulegen, damit die Änderungen an Version 1.1 desgs-cxf-01Profils angewendet werden. - Führen Sie ein Upgrade des
child1Containers auf Version 1.1 durch, indem Sie den folgenden Konsolenbefehl eingeben:JBossFuse:karaf@root> fabric:container-upgrade 1.1 child1
JBossFuse:karaf@root> fabric:container-upgrade 1.1 child1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4.4. Zurücksetzen auf ein altes Profil Link kopierenLink in die Zwischenablage kopiert!
gs-cxf-01 Profils zurücksetzen, indem Sie den fabric:container-rollback Befehl wie folgt verwenden:
JBossFuse:karaf@root> fabric:container-rollback 1.0 child1
JBossFuse:karaf@root> fabric:container-rollback 1.0 child1
Anhang A. Bearbeiten von Profilen mit eingebautem Texteditor Link kopierenLink in die Zwischenablage kopiert!
Zusammenfassung
profile-edit Befehl ohne Argumente außer dem Profilnamen (und optional der Version) erfolgen. Alternativ kann auch die --pid Option für das Bearbeiten der OSGi PID-Eigenschaften oder das Hinzufügen der --resource Option für das Bearbeiten allgemeiner Ressourcen verwendet werden.
A.1. Bearbeiten von Agent-Eigenschaften Link kopierenLink in die Zwischenablage kopiert!
A.1.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
A.1.2. Öffnen Sie die Agent Properties Ressource Link kopierenLink in die Zwischenablage kopiert!
JBossFuse:karaf@root> profile-edit Profile [Version]
JBossFuse:karaf@root> profile-edit Profile [Version]
Profile der Name des zu bearbeitenden Profils ist und Sie optional auch die Profilversion Version festlegen können. Der Texteditor öffnet sich im Konsolenfenster und zeigt den aktuellen Profilnamen und die Version oben links im Fenster an. Die Zeile ganz unten im Editor-Bildschirm bietet eine Übersicht der verfügbaren Bearbeitungsbefehle und Sie können mittels der Pfeiltasten innerhalb des Bildschirms navigieren.
A.1.3. Festlegen der Speicherorte des Feature-Repository Link kopierenLink in die Zwischenablage kopiert!
repository.ID=URL
repository.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort eines einzelnen Feature Repository angibt (es kann nur eine Repository URL in einer Zeile festgelegt werden).
A.1.4. Festlegen bereitgestellter Features Link kopierenLink in die Zwischenablage kopiert!
feature.ID=FeatureName
feature.ID=FeatureName
ID ein arbiträrer eindeutiger Bezeichner ist und FeatureName der Name eines Feature ist.
A.1.5. Festlegen bereitgestellter Bündel Link kopierenLink in die Zwischenablage kopiert!
bundle.ID=URL
bundle.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort des Bündels festlegt.
blueprint: (oder spring:) URL-Handler zum Bereitstellen einer Blueprint XML Ressource (oder einer Spring XML Ressource) als ein OSGi-Bündel verwendet werden.
A.1.6. Festlegen von Bündel-Overrides Link kopierenLink in die Zwischenablage kopiert!
override.ID=URL
override.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort des Bündels festlegt.
A.1.7. Festlegen von etc/config.properties Eigenschaften Link kopierenLink in die Zwischenablage kopiert!
etc/config.properties in einem Standalone-Container), fügen Sie eine Zeile in folgendem Format hinzu:
config.Property=Value
config.Property=Value
A.1.8. Festlegen von etc/system.properties Eigenschaften Link kopierenLink in die Zwischenablage kopiert!
etc/system.properties in einem Standalone-Container), fügen Sie eine Zeile in folgendem Format hinzu:
system.Property=Value
system.Property=Value
Property bereits auf der JVM-Ebene eingestellt (zum Beispiel durch die --jvm-opts Option am fabric:container-create Befehl), so setzt der vorangehende fabric:profile-edit Befehl die Einstellung auf JVM-Ebene nicht außer Kraft. Um eine Einstellung auf JVM-Ebene außer Kraft zu setzen, stellen Sie die Systemeigenschaft wie folgt ein:
system.karaf.override.Property=Value
system.karaf.override.Property=Value
A.1.9. Festlegen von Bibliotheken zum Hinzufügen zu Java runtime lib/ Link kopierenLink in die Zwischenablage kopiert!
lib/ Verzeichnis der zugrundeliegenden Java Runtime), fügen Sie eine Zeile im folgenden Format hinzu:
lib.ID=URL
lib.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort der Bibliothek festlegt.
A.1.10. Festlegen der Bibliotheken, die Java Runtime lib/ext/ hinzugefügt werden sollen Link kopierenLink in die Zwischenablage kopiert!
lib/ext/ Verzeichnis der zugrundeliegenden Java Runtime), fügen Sie eine Zeile im folgenden Format hinzu:
ext.ID=URL
ext.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort der Erweiterungsbibliothek festlegt.
A.1.11. Festlegen der Bibliotheken, die Java Runtime lib/endorsed/ hinzugefügt werden sollen Link kopierenLink in die Zwischenablage kopiert!
lib/endorsed/ Verzeichnis der zugrundeliegenden Java Runtime), fügen Sie eine Zeile im folgenden Format hinzu:
endorsed.ID=URL
endorsed.ID=URL
ID ein arbiträrer eindeutiger Bezeichner ist und URL den Speicherort der unterstützten Bibliothek festlegt.
A.1.12. Beispiel Link kopierenLink in die Zwischenablage kopiert!
mq-client Profils zum Bearbeiten zu öffnen, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> profile-edit mq-client
JBossFuse:karaf@root> profile-edit mq-client
^X ein, um den Texteditor zu beenden und zurück zum Konsolenprompt zu gelangen.
A.2. Bearbeiten von OSGi Config Admin Eigenschaften Link kopierenLink in die Zwischenablage kopiert!
A.2.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
A.2.2. Persistente ID Link kopierenLink in die Zwischenablage kopiert!
PID persistenter ID assoziierten Eigenschaften in der PID.properties Ressource definiert.
A.2.3. Öffnen Sie die Config Admin Eigenschaften Ressource Link kopierenLink in die Zwischenablage kopiert!
PID persistenten ID assoziierten Eigenschaften zu beginnen, geben Sie den folgenden Befehl ein:
JBossFuse:karaf@root> profile-edit --pid PID Profile [Version]
JBossFuse:karaf@root> profile-edit --pid PID Profile [Version]
--resource PID.properties im profile-edit Befehl zu bearbeiten statt die --pid PID Option zu verwenden.
A.2.4. Festlegen von OSGi Config Admin Eigenschaften Link kopierenLink in die Zwischenablage kopiert!
PID.properties Ressource des festgelegten Profils an (die in der ZooKeeper Registry gespeichert sind). Um die Eigenschaften zu bearbeiten, fügen Sie Zeilen in der folgenden Form hinzu, bearbeiten oder löschen Sie diese:
Property=Value
Property=Value
A.2.5. Beispiel Link kopierenLink in die Zwischenablage kopiert!
io.fabric8.hadoop PID im hadoop-base Profil zu bearbeiten, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> profile-edit --resource io.fabric8.hadoop.properties hadoop-base 1.0
JBossFuse:karaf@root> profile-edit --resource io.fabric8.hadoop.properties hadoop-base 1.0
\:). Streng genommen ist es nur dann notwendig, dem Doppelpunkt ein Fluchtsymbol hinzuzufügen, wenn dieser Teil des Namens der Eigenschaft ist (auf der linken Seite des Gleichheitszeichens). Der profile-edit Befehl versieht jedoch beim Schreiben in die Ressource automatisch alle Doppelpunkte mit einem Fluchtsymbol. Bei der manuellen Bearbeitung von Ressourcen mit dem Texteditor müssen Sie jedoch kein Fluchtsymbol bei URLs auf der rechten Seite des Gleichheitszeichens hinzufügen.
^X ein, um den Texteditor zu beenden und zurück zum Konsolenprompt zu gelangen.
A.3. Bearbeiten anderer Ressourcen Link kopierenLink in die Zwischenablage kopiert!
A.3.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
A.3.2. Erstellen und Bearbeiten einer arbiträren Ressource Link kopierenLink in die Zwischenablage kopiert!
JBossFuse:karaf@root> profile-edit --resource Resource Profile [Version]
JBossFuse:karaf@root> profile-edit --resource Resource Profile [Version]
Resource der Name der Profilressource ist, die Sie bearbeiten möchten. Falls Resource nicht bereits existiert, so wird sie erstellt.
A.3.3. broker.xml Beispiel Link kopierenLink in die Zwischenablage kopiert!
mq-base Profil zum Beispiel hat die broker.xml Ressource, in der die Inhalte einer Apache ActiveMQ Broker Konfigurationsdatei gespeichert sind. Um die broker.xml Ressource zu bearbeiten, geben Sie den folgenden Konsolenbefehl ein:
JBossFuse:karaf@root> profile-edit --resource broker.xml mq-base 1.0
JBossFuse:karaf@root> profile-edit --resource broker.xml mq-base 1.0
^X ein, um den Texteditor zu beenden und zurück zum Konsolenprompt zu gelangen.
A.3.4. Referenzieren einer Profilressource Link kopierenLink in die Zwischenablage kopiert!
broker.xml Ressource aus dem vorherigen Beispiel etwa wird an folgendem ZooKeeper Speicherort verwahrt:
zk:/fabric/configs/versions/1.0/profiles/mq-base/broker.xml
zk:/fabric/configs/versions/1.0/profiles/mq-base/broker.xml
Version des Profile Profils der Resource Ressource an folgendem Speicherort:
zk:/fabric/configs/versions/Version/profiles/Profile/Resource
zk:/fabric/configs/versions/Version/profiles/Profile/Resource
org.fusesource.mq.fabric.server-broker PID des mq Profils zum Beispiel definiert die folgenden Eigenschaften, wobei die config Eigenschaft die broker.xml Ressource referenziert:
connectors=openwire config=zk\:/fabric/configs/versions/1.0/profiles/mq-base/broker.xml group=default standby.pool=default
connectors=openwire
config=zk\:/fabric/configs/versions/1.0/profiles/mq-base/broker.xml
group=default
standby.pool=default
A.4. Profilattribute Link kopierenLink in die Zwischenablage kopiert!
A.4.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
A.4.2. »parents« Attribut Link kopierenLink in die Zwischenablage kopiert!
parents Attribut ist eine Liste von einem oder mehreren übergeordneten Profilen. Dieses Attribut kann mit dem profile-change-parents Konsolenbefehl eingestellt werden. Um zum Beispiel die übergeordneten Profile camel und cxf dem my-camel-cxf-profile Profil zuzuweisen, würden Sie den folgenden Konsolenbefehl eingeben:
JBossFuse:karaf@root> profile-change-parents --version 1.0 my-camel-cxf-profile camel cxf
JBossFuse:karaf@root> profile-change-parents --version 1.0 my-camel-cxf-profile camel cxf
A.4.3. »abstract« Attribut Link kopierenLink in die Zwischenablage kopiert!
abstract Attribut eines Profils auf true eingestellt, so kann das Profil einem Container nicht direkt bereitgestellt werden. Dies ist von Nutzen bei Profilen, die nur als übergeordnete Profile für andere Profile vorgesehen sind, zum Beispiel mq-base. Sie können das »abstract« Attribut von der Managementkonsole aus einstellen.
A.4.4. »locked« Attribut Link kopierenLink in die Zwischenablage kopiert!
A.4.5. »hidden« Attribut Link kopierenLink in die Zwischenablage kopiert!
hidden Attribut ist ein Flag, das in der Regel an Profilen eingestellt wird, die Fabric automatisch erstellt (zum Beispiel, um das Einrichten eines Registry-Servers anzupassen). Standardmäßig werden verborgene Profile nicht angezeigt, wenn Sie den profile-list Befehl ausführen, aber Sie können diese sehen, wenn Sie das --hidden Flag wie folgt hinzufügen:
Rechtlicher Hinweis Link kopierenLink in die Zwischenablage kopiert!
Trademark Disclaimer