Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.3.2. Ein Router-Projekt erstellen
3.2.1. Überblick
Dieser Abschnitt beschreibt das Generieren eines Router-Projekts, das als Proxy für den in Abschnitt 3.1, »Erstellen eines Web-Dienst-Projekts« beschriebenen WS-Server fungiert. Der Startpunkt für dieses Projekt ist der
karaf-camel-cbr-archetype
Maven-Archetyp.
3.2.2. Voraussetzungen
Dieses Projekt hängt vom
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
Öffnen Sie eine Befehlszeile und ändern Sie das Verzeichnis zum
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:
mvn archetype:generate -DarchetypeGroupId=io.fabric8.archetypes -DarchetypeArtifactId=karaf-camel-cbr-archetype -DarchetypeVersion=1.2.0.redhat-621084 -DgroupId=org.fusesource.example -DartifactId=camel-basic -Dversion=1.0-SNAPSHOT -Dfabric8-profile=camel-basic-profile
Anmerkung
Die Argumente des vorangehenden Befehls werden der Lesbarkeit halber in separaten Zeilen dargestellt, aber wenn Sie den Befehl tatsächlich eingeben, so muss dies in einer einzelnen Zeile erfolgen.
Eine der folgenden ähnliche Nachricht fordert Sie zur Bestätigung der Projekteinstellungen auf:
[INFO] Using property: groupId = org.fusesource.example [INFO] Using property: artifactId = camel-basic [INFO] Using property: version = 1.0-SNAPSHOT [INFO] Using property: package = org.fusesource.example [INFO] Using property: fabric8-profile = camel-basic-profile Confirm properties configuration: groupId: org.fusesource.example artifactId: camel-basic version: 1.0-SNAPSHOT package: org.fusesource.example fabric8-profile: camel-basic-profile Y: :
Tippen Sie Return, um die Einstellungen zu akzeptieren und das Projekt zu generieren. Nach Beenden des Befehls sollte sich ein neues Maven Projekt im
get-started/camel-basic
Verzeichnis befinden.
3.2.4. Hinzufügen der benötigten Maven Abhängigkeit
Da die Route die Apache Camel Jetty Komponente verwendet, müssen Sie eine Maven Abhängigkeit am
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:
<project ...> ... <dependencies> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-blueprint</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jetty</artifactId> </dependency> ... </dependencies> ... </project>
3.2.5. Bearbeiten der Route
Sie werden die vom Archetyp generierte Standardroute bearbeiten und diese in eine Route ändern, die eine HTTP-Bridge implementiert. Diese Bridge wird zwischen dem WS Client und dem Webdienst eingefügt, und ermöglicht uns das Anwenden von Routing-Logik an den die Route passierenden WSDL-Nachrichten.
Öffnen Sie mit dem Texteditor Ihrer Wahl
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:
<?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/blueprint" xsi:schemaLocation=" http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd"> <camelContext id="blueprintContext" trace="false" xmlns="http://camel.apache.org/schema/blueprint"> <route id="httpBridge"> <from uri="jetty:http://0.0.0.0:8282/cxf/HelloWorld?matchOnUriPrefix=true"/> <delay><constant>5000</constant></delay> <to uri="jetty:http://localhost:8181/cxf/HelloWorld?bridgeEndpoint=true&throwExceptionOnFailure=false"/> </route> </camelContext> </blueprint>
Das
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.
Eine ausführliche Erörterung und Erklärung der HTTP-Bridge finden Sie unter Proxying mit HTTP.
3.2.6. Ändern des Port im Web-Client Test
Standardmäßig verbindet sich der Web-Client an Port 8181 direkt mit dem Web-Server. Um die HTTP-Bridge zu testen, wollen wir jedoch den Web-Client mit dem von der HTTP-Bridge offengelegten Jetty-Port verbinden, der auf Port 8282 horcht. Wir müssen daher die folgende Zeile im
cxf-basic
Projekt bearbeiten:
cxf-basic/src/test/java/org/fusesource/example/SoapTest.java
Öffnen Sie die
SoapTest.java
Datei in einem Texteditor Ihrer Wahl und suchen Sie die folgende Zeile:
URLConnection connection = new URL("http://localhost:8181/cxf/HelloWorld").openConnection();
Ändern Sie die Nummer des Ports in dieser Zeile von 8181 zu 8282, wie im folgenden Auszug dargestellt:
URLConnection connection = new URL("http://localhost:8282/cxf/HelloWorld").openConnection();
3.2.7. Führen Sie den Build des Router-Projekts durch
Führen Sie den Build des Router-Projekts aus und installieren Sie die generierte JAR-Datei in Ihrem lokalen Maven Repository. Geben Sie in einer Befehlseingabe die folgenden Befehle ein:
cd camel-basic mvn install
3.2.8. Bereitstellen und Starten der Route
Falls Sie den Red Hat JBoss Fuse Container noch nicht gestartet und das Webdienst-Bündel noch nicht bereitgestellt haben, so tun Sie dies jetzt—siehe »Bereitstellen und Starten des WS-Servers«.
Um die
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
Wurde das Bündel erfolgreich aufgelöst und installiert, so antwortet der Container mit der ID des neu erstellten Bündels—zum Beispiel:
Bundle ID: 230
3.2.9. Testen der Route mit dem WS-Client
Das
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
Läuft der Client erfolgreich, so erscheint eine der folgenden ähnliche Ausgabe:
------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.fusesource.example.SoapTest
Nach einer Verzögerung von fünf Sekunden, erscheint die folgende Antwort:
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