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.4. Frameworks für die Einspeisung von Abhängigkeiten
2.4.1. Überblick
Red Hat JBoss Fuse bietet Ihnen die Wahl zwischen den folgenden Frameworks für die Einspeisung von Abhängigkeiten:
2.4.2. Blueprint oder Spring?
Beim Versuch der Entscheidung zwischen Frameworks zur Einspeisung von Abhängigkeiten Blueprint und Spring sollten Sie daran denken, dass Blueprint einen maßgeblichen Vorteil vor Spring bietet: werden neue Abhängigkeiten in Blueprint durch XML-Schema-Namespaces eingeführt, so kann Blueprint diese Abhängigkeiten automatisch zur Runtime auflösen. Wenn Sie im Gegensatz dazu Ihr Projekt als OSGi-Bündel packen, so erfordert es Spring, dass explizit neue Abhängigkeiten der
maven-bundle-plugin
Konfiguration hinzugefügt werden.
2.4.3. Bean Registrys
Eine grundlegende Fähigkeit von Frameworks zur Einspeisung von Abhängigkeiten ist das Erstellen von Java Bean-Instanzen. Jedes in einem Framework zur Einspeisung von Abhängigkeiten erstellte Java-Bean wird standardmäßig einer Bean Registry hinzugefügt. Diese Bean Registry ist eine Karte, die Ihnen das Auffinden der Objektreferenz eines Beans mittels der Bean ID ermöglicht. Dadurch können Bean Instanzen innerhalb der XML-Konfigurationsdatei des Framework referenziert und Bean-Instanzen von Ihrem Java-Code referenziert werden.
Beim Definieren von Apache Camel Routen etwa können Sie die
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
Spring ist ein Framework für die Einspeisung von Abhängigkeiten, aber umfasst auch einen Satz an Diensten und APIs, die seinen Einsatz als Container gestatten. Eine Spring XML-Konfigurationsdatei kann auf folgende Arten verwendet werden:
- 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
bean
Element 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
camelContext
Element 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/jaxrs
oder ein Simple Binding,http://cxf.apache.org/simple
konfigurieren. - Apache ActiveMQ configuration—in der Regel vom
broker
Element im Schema-Namespacehttp://activemq.apache.org/schema/core
eingefü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-plugin
Konfiguration 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
In Ihrem Maven-Projekt müssen die Spring XML-Dateien an dem folgenden Speicherort platziert sein:
InstallDir/src/main/resources/META-INF/spring/*.xml
2.4.6. Spring XML Beispiel
Nachfolgend sehen Sie den Umriss einer Spring XML-Datei:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <camelContext xmlns="http://camel.apache.org/schema/spring"> <!-- Define Camel routes here --> ... </camelContext> </beans>
Sie können eine solche Spring XML-Datei zum Konfigurieren von Apache ActiveMQ, Apache CXF und Apache Camel Anwendungen verwenden. Das vorherige Beispiel etwa beinhaltet ein
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
Bei Blueprint handelt es sich um ein Framework zur Einspeisung von Abhängigkeiten, definiert in der OSGi Spezifikation. Blueprint wurde ursprünglich von Spring gesponsert und basierte auf Spring DM. Die von Blueprint bereitgestellte Funktionalität ist daher recht ähnlich wie Spring XML, aber Blueprint ist ein leichtgewichtigeres Framework und wurde speziell für den OSGi Container entworfen.
- 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
bean
Element 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
camelContext
Element 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/simple
konfigurieren. - Apache ActiveMQ configuration—in der Regel vom
broker
Element im Schema-Namespacehttp://activemq.apache.org/schema/core
eingefü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
In Ihrem Maven-Projekt müssen die Blueprint XML-Dateien an dem folgenden Speicherort platziert sein:
InstallDir/src/main/resources/OSGI-INF/blueprint/*.xml
2.4.9. Blueprint XML Beispiel
Nachfolgend sehen Sie den Umriss einer Blueprint XML-Datei:
<?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" > <camelContext xmlns="http://camel.apache.org/schema/blueprint"> <!-- Define Camel routes here --> ... </camelContext> </blueprint>
Sie können eine solche Blueprint XML-Datei verwenden, um Apache ActiveMQ, Apache CXF und Apache Camel Applikationen zu konfigurieren.Das vorherige Beispiel etwa beinhaltet ein
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«.
Anmerkung
Der für Apache Camel in Blueprint verwendete Schema-Namespace
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.