3.5. Konfiguration der Applikation


3.5.1. OSGi Config Admin Dienst

Der OSGi Config Admin Dienst ist ein Standard OSGi Konfigurationsmechanismus, der es Administratoren gestattet, die Konfiguration der Applikation zum Zeitpunkt der Bereitstellung bei der Runtime zu bearbeiten. Dies steht im Gegensatz zu den Einstellungen, die direkt in einer Blueprint XML-Datei erfolgen, da diese XML-Dateien nur dem Entwickler zugänglich sind.
Der OSGi Config Admin Dienst stützt sich auf die folgenden Grundkonzepte:
Persistent ID
Eine persistente ID (PID) identifiziert eine Gruppe verwandter Eigenschaften. Eine PID ist normalerweise in demselben Format wie ein Java-Paketname geschrieben. Die org.ops4j.pax.web PID zum Beispiel konfiguriert den standardmäßigen Jetty Web server des Red Hat JBoss Fuse Containers.
Eigenschaften
Eine Eigenschaft ist ein Name-Wert-Paar, das immer zu einer bestimmten PID gehört.

3.5.2. Einstellen der Konfigurationseigenschaften

Es gibt zwei Hauptarten, um die Eigenschaften im OSGi Config Admin Dienst anzupassen. Dies kann wie folgt geschehen:
  • Für eine bestimmt PID, PersistentID, können Sie eine Textdatei im InstallDir/etc Verzeichnis erstellen, das der folgenden Namengebungskonvention folgt:
    InstallDir/etc/PersistentID.cfg
    Sie können jetzt die zu dieser PID gehörenden Eigenschaften einstellen, indem Sie diese Datei bearbeiten und Einträge in der folgenden Form hinzufügen:
    Property=Value
  • Fuse Fabric unterstützt einen weiteren Mechanismus zur Anpassung von OSGi Config Admin Eigenschaften. Sie stellen in Fuse Fabric OSGi Config Admin Eigenschaften in einem Fabric Profil ein (wobei ein Profil die für die Bereitstellung einer Applikation erforderlichen Daten beinhaltet). Es gibt zwei alternative Wege, um diese Konfigurationseinstellungen in einem Profil zu bearbeiten:

3.5.3. Ersetzen Sie TCP-Port durch einen Platzhalter für die Eigenschaft

Als ein Beispiel wie der OSGi Config Admin Dienst in der Praxis eingesetzt werden könnte, könnten wir uns etwa den vom HelloWorld Web-Dienst vom cxf-basic Projekt verwendeten TCP-Port ansehen. Durch Bearbeiten der Blueprint XML Datei, die diesen Webdienst definiert, können Sie den TCP-Port des Webdienstes durch den OSGi Config Admin Dienst anpassbar machen.
Die TCP-Port-Nummer in der Blueprint XML-Datei wird durch einen Eigenschaften-Platzhalter ersetzt, der die Port-Nummer zur Runtime durch Auffinden der Eigenschaft im OSGi Config Admin Dienst ersetzt.

3.5.4. Blueprint XML Beispiel

Im cxf-basic Projekt werden alle XML-Dateien vom folgenden Speicherort wie Blueprint XML-Dateien behandelt (dem standardmäßigen Maven Speicherort für Blueprint XML-Dateien):
cxf-basic/src/main/resources/OSGI-INF/blueprint/*.xml
Bearbeiten Sie die blueprint.xml Datei vom vorherigen Verzeichnis und fügen Sie die in Beispiel 3.1, »Konfiguerieren der Port-Nummer in Blueprint XML« dargestellten XML-Inhalte hinzu.

Beispiel 3.1. Konfiguerieren der Port-Nummer in Blueprint XML

<?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:jaxws="http://cxf.apache.org/blueprint/jaxws"
           xmlns:cxf="http://cxf.apache.org/blueprint/core"
           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
           xsi:schemaLocation="
      http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
      http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd">

    <cxf:bus>
        <!--
           In this example, we're enabling the logging feature.  This will ensure that both the inbound and outbound
           XML message are being logged for every web service invocation.
        -->
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus>

    <!-- osgi blueprint property placeholder -->
    <cm:property-placeholder id="placeholder"
                             persistent-id="org.fusesource.example.get.started">
        <cm:default-properties>
            <cm:property name="portNumber" value="8181"/>
        </cm:default-properties>
    </cm:property-placeholder>

    <jaxws:endpoint id="helloWorld"
                    implementor="org.fusesource.example.HelloWorldImpl"
                    address="http://0.0.0.0:${portNumber}/cxf/HelloWorld">
    </jaxws:endpoint>

</blueprint>
Der markierte Text zeigt diejenigen Teile der Blueprint-Konfiguration, die für den OSGi Config Admin Dienst maßgeblich sind. Abgesehen vom cm Namespace, sind die Hauptänderungen wie folgt:
  1. Das cm:property-placeholder Bean kontaktiert den OSGi Config Admin Dienst und ruft alle Eigenschaft-Einstellungen von der org.fusesource.example.get.started PID ab. Die Schlüssel-Wert-Paare im cm:default-properties/cm:property Element legen Standardwerte für die Eigenschaften fest (die außer Kraft gesetzt werden, wenn entsprechende Einstellungen vom OSGi Config Admin Dienst abgerufen werden können).
  2. Der ${portNumber} Platzhalter wird zum Festlegen der TCP Port-Nummer verwendet, die vom HelloWorld Webdienst benutzt wird.
Anmerkung
Für die Blueprint XML Konfiguration müssen Sie sicherstellen, dass die Anweisungen für den maven-bundle-plugin in der pom.xml Datei des Projekts den Platzhalter * in den im Import-Package Element gelisteten Paketen beinhalten (ist das Import-Package Element nicht vorhanden, so wird der Platzhalter standardmäßig eingesetzt). Andernfalls wird Ihnen der folgende Fehler gemeldet: Unresolved references to [org.osgi.service.blueprint] by class(es) on the Bundle-Classpath[Jar:dot]: [].

3.5.5. Bereitstellung der konfigurierbaren Applikation

Um den konfigurierbaren Webdienst vom cxf-basic Projekt bereitzustellen, führen Sie die folgenden Schritte durch:
  1. Bearbeiten Sie die Blueprint XML Datei blueprint.xml, um den OSGi Config Admin Dienst, wie in Beispiel 3.1, »Konfiguerieren der Port-Nummer in Blueprint XML« beschrieben, zu integrieren.
  2. Führen Sie einen erneuten Build des cxf-basic Projekts mit Maven durch. Öffnen Sie eine Befehlszeile, ändern Sie das Verzeichnis in das get-started/cxf-basic Verzeichnis und geben Sie den folgenden Maven Befehl ein:
    mvn clean install
  3. Erstellen Sie die Konfigurationdatei im etc/ Verzeichnis Ihrer Red Hat JBoss Fuse Installation:
    InstallDir/etc/org.fusesource.example.get.started.cfg
    Bearbeiten Sie die org.fusesource.example.get.started.cfg Datei mit einem Texteditor und fügen Sie die folgenden Inhalte hinzu:
    portNumber=8182
  4. Wenn Sie die get-started-basic Funktion zuvor bereitgestellt haben (wie in Abschnitt 3.4, »Definieren eines Feature für die Applikation« beschrieben), deinstallieren Sie sie jetzt:
    JBossFuse:karaf@root> features:uninstall get-started-basic
  5. Stellen Sie das get-started-cxf Feature bereit, indem Sie den folgenden Konsolenbefehl eingeben:
    JBossFuse:karaf@root> features:install get-started-cxf
  6. Nachdem Sie ein paar Sekunden auf den Start der Bündel gewartet haben, können Sie den vom HelloWorld-Dienst verwendeten Port durch Eingabe des folgenden Konsolenbefehls überprüfen:
    JBossFuse:karaf@root> cxf:list-endpoints 
    Name                      State      Address                                                      BusID                                   
    [FabricResource         ] [Started ] [/fabric8                                                  ] [io.fabric8.fabric-rest-cxf250714502   ]
    [HelloWorldImplPort     ] [Started ] [http://0.0.0.0:8182/cxf/HelloWorld                      ] [org.fusesource.example.cxf-basic-cxf1456001875]
    Sie sehen, dass der HelloWorld-Dienst an Port 8182 horcht.
  7. Falls Sie den Web-Client-Test gegen diesen Webdienst durchführen möchten, so müssen Sie die vom Client verwendete URL anpassen. Öffnen Sie mit einem Texteditor die SoapTest.java Datei vom cxf-basic/src/test/java/org/fusesource/example Verzeichnis und ändern Sie die Verbindungs-URL wie im folgenden Fragment markiert:
    URLConnection connection = new URL("http://localhost:8182/cxf/HelloWorld").openConnection();
  8. Sie können die Applikation dann testen, indem Sie eine Befehlszeile öffnen, ins Verzeichnis get-started/cxf-basic wechseln und den folgenden Befehl eingeben:
    mvn -Ptest
  9. Um die Funktion zu deinstallieren, geben Sie den folgenden Konsolenbefehl ein:
    features:uninstall get-started-cxf
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.