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&amp;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
Red Hat logoGithubRedditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

© 2024 Red Hat, Inc.