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.Kapitel 3. Erste Schritte beim Entwickeln
Zusammenfassung
Dieses Kapitel erläutert, wie Sie mit der auf Maven basierenden Entwicklung beginnen. Ein zweiteiliges Projekt illustriert, wie Applikationen mittels Apache CXF und Apache Camel entwickelt werden.
3.1. Erstellen eines Web-Dienst-Projekts
3.1.1. Überblick
Dieser Abschnitt beschreibt das Generieren eines einfachen Webdienst-Projekts, das den vollständigen Demo-Code für einen Server und Test-Client beinhaltet. Der Startpunkt für dieses Projekt ist der
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
Um vom Maven Repository auf Artifakte zuzugreifen, müssen Sie das
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
Existiert derzeit keine
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:
<settings> <profiles> <profile> <id>my-profile</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>fusesource</id> <url>http://repo.fusesource.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> ... </repositories> </profile> </profiles> ... </settings>
3.1.3. Ein Projekt von der Befehlszeile erstellen
Sie können ein Maven-Projekt direkt von der Befehlszeile aus erstellen, indem Sie das
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
Sie können jetzt das
archetype:generate
Goal für das Aufrufen des karaf-soap-archetype
Archetyps verwenden, der ein einfaches Apache CXF Demo generiert:
mvn archetype:generate -DarchetypeGroupId=io.fabric8.archetypes -DarchetypeArtifactId=karaf-soap-archetype -DarchetypeVersion=1.2.0.redhat-621084 -DgroupId=org.fusesource.example -DartifactId=cxf-basic -Dversion=1.0-SNAPSHOT -Dfabric8-profile=cxf-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 = cxf-basic [INFO] Using property: version = 1.0-SNAPSHOT [INFO] Using property: package = org.fusesource.example [INFO] Using property: fabric8-profile = cxf-basic-profile Confirm properties configuration: groupId: org.fusesource.example artifactId: cxf-basic version: 1.0-SNAPSHOT package: org.fusesource.example fabric8-profile: cxf-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/cxf-basic
Verzeichnis befinden.
3.1.4. Anpassen der Web-Client Testnachricht
Passen Sie die Testnachricht des Beispiel-Client derart an, dass sie den korrekten XML-Namespace verwendet. Bearbeiten Sie die
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.
Nach dem Bearbeiten der
request.xml
Datei sollten die Inhalte wie folgt aussehen:
<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:sayHi xmlns:ns2="http://example.fusesource.org/"> <arg0>John Doe</arg0> </ns2:sayHi> </soap:Body> </soap:Envelope>
3.1.5. Build des Web-Dienst-Projekts
Führen Sie den Build des Web-Dienste Projekts aus und installieren Sie die generierte JAR-Datei in Ihrem lokalen Maven Repository. Geben Sie in einer Befehlseingabe die folgenden Befehle ein:
cd cxf-basic mvn install
3.1.6. Initialisieren der Container-Sicherheit
Falls Sie es nicht bereits getan haben, erstellen Sie einen (oder mehrere) Benutzer, indem Sie der
InstallDir/etc/users.properties
Datei eine Zeile in der folgenden Form hinzufügen:
Username=Password[,RoleA][,RoleB]...
Mindestens einer der Benutzer muss die
Administrator
Rolle besitzen, um die Administration des Fabric zu aktivieren. Zum Beispiel:
admin=secretpassword,Administrator
3.1.7. Starten des Containers
Starten Sie den JBoss Fuse Container. Öffnen Sie eine neue Befehlseingabe und geben Sie folgende Befehle ein:
cd InstallDir/bin ./fuse
Sie sehen einen dem folgenden ähnlichen Begrüßungsbildschirm:
_ ____ ______ | | _ \ | ____| | | |_) | ___ ___ ___ | |__ _ _ ___ ___ _ | | _ < / _ \/ __/ __| | __| | | / __|/ _ \ | |__| | |_) | (_) \__ \__ \ | | | |_| \__ \ __/ \____/|____/ \___/|___/___/ |_| \__,_|___/\___| JBoss Fuse (6.2.1.redhat-084) http://www.redhat.com/products/jbossenterprisemiddleware/fuse/ Hit '<tab>' for a list of available commands and '[cmd] --help' for help on a specific command. Open a browser to http://localhost:8181 to access the management console Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown JBoss Fuse. JBossFuse:karaf@root>
3.1.8. Bereitstellen und Starten des WS-Servers
Um den
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
Anmerkung
Falls sich Ihr lokales Maven Repository an einem nicht standardmäßigen Speicherort befindet, so ist es möglich, dass Sie den Wert der
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.
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: 265
3.1.9. Überprüfen Sie, ob das Bündel gestartet wurde
Um zu überprüfen, ob das Bündel gestartet wurde, geben Sie den Konsolenbefehl
list
ein, der Ihnen den Status aller im Container installierter Bündel liefert:
JBossFuse:karaf@root> list
Gegen Ende der Liste, sollte eine Statuszeile ähnlich dieser sichtbar sein:
[ 265] [Installed ] [ ] [ ] [ 80] JBoss Fuse Quickstart: soap (1.0.0.SNAPSHOT)
Anmerkung
Um Unordnung zu vermeiden zeigt der
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
Das
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
Läuft der Client erfolgreich, so erscheint eine der folgenden ähnliche Ausgabe:
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
Falls Sie Probleme beim Ausführen des Client haben, so gibt es eine noch einfachere Weise, um den Webdienst zu verbinden. Öffnen Sie den Webbrowser Ihrer Wahl und navigieren Sie zu der folgenden URL, um den JBoss Fuse Jetty Container zu kontaktieren:
http://localhost:8181/cxf
Um die WSDL direkt vom HelloWorld Webdienst abzufragen, navigieren Sie zu der folgenden URL:
http://localhost:8181/cxf/HelloWorld?wsdl