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.2.2. Entwicklungsmodell
2.2.1. Überblick Link kopierenLink in die Zwischenablage kopiert!
Link kopierenLink in die Zwischenablage kopiert!
Abbildung 2.1, »Entwicklung eines JBoss Fuse Projekts« zeigt eine Übersicht für den Build eines OSGi-Bündels oder eines Fuse Applikationsbündels, die in den Red Hat JBoss Fuse Container bereitgestellt werden.
Abbildung 2.1. Entwicklung eines JBoss Fuse Projekts
2.2.2. Maven Link kopierenLink in die Zwischenablage kopiert!
Link kopierenLink in die Zwischenablage kopiert!
Apache Maven, das empfohlene Build System für JBoss Fuse, beeinflusst das Entwicklungsmodell auf die folgenden wichtigen Weisen:
- 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!
Link kopierenLink in die Zwischenablage kopiert!
Eine einfache Weise, um mit dem Entwickeln zu beginnen, ist die Verwendung von Maven Archetypen, die analog zum Assistenten für ein neues Projekt ist (außer, dass es von der Befehlszeile aus aufgerufen werden muss). Ein Maven-Archetyp erstellt in der Regel ein komplettes neues Maven Projekt mit dem korrekten Verzeichnis-Layout und Beispiel-Code. Siehe zum Beispiel Abschnitt 3.1, »Erstellen eines Web-Dienst-Projekts« and Abschnitt 3.2, »Ein Router-Projekt erstellen«.
2.2.4. Maven POM-Dateien Link kopierenLink in die Zwischenablage kopiert!
Link kopierenLink in die Zwischenablage kopiert!
Die Maven Project Object Model (POM) Datei,
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.
Für größere Maven Projekte gibt es zwei besondere Arten von POM-Dateien, die Sie möglicherweise ebenfalls benötigen:
- 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!
Link kopierenLink in die Zwischenablage kopiert!
Maven reserviert einen Standardspeicherort
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!
Link kopierenLink in die Zwischenablage kopiert!
JBoss Fuse bietet eingebauten Support für zwei Frameworks für die Einspeisung von Abhängigkeiten: Spring XML und Blueprint XML. Sie können diese einzeln oder gemeinsam benutzen. Die JBoss Fuse zugrundeliegenden Projekte (Apache Camel, Apache CXF, Apache ActiveMQ und Apache ServiceMix) bieten alle starken Support für die XML-Konfiguration. In vielen Fällen ist es sogar möglich, eine komplette Applikation zu entwickeln, die in XML geschrieben wurde, ohne dass Java-Code überhaupt eingesetzt werden muss.
Weitere Informationen finden Sie unter Abschnitt 2.4, »Frameworks für die Einspeisung von Abhängigkeiten«.
2.2.7. Bereitstellungs-Metadaten Link kopierenLink in die Zwischenablage kopiert!
Link kopierenLink in die Zwischenablage kopiert!
Je nachdem wie ein Projekt gepackt und bereitgestellt wird (als ein OSGi-Bündel oder ein WAR), sind unterschiedliche Dateien im JAR-Paket eingebettet, die als Bereitstellungs-Metadaten interpretiert werden können, zum Beispiel:
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.xml
Datei ist der Standard-Deskriptor für eine als Web Archive (WAR) gepackte Applikation.
2.2.8. Administrative Metadaten Link kopierenLink in die Zwischenablage kopiert!
Link kopierenLink in die Zwischenablage kopiert!
Die folgenden Arten Metadaten sind Administratoren zugänglich und können von diesen angepasst oder derart verändert werden, dass sich dass Verhalten des Bündels zur Runtime ändert:
- 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).