Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

Kapitel 4. Änderungen der Serverkonfiguration

4.1. Optionen zur Migration der Serverkonfiguration

Um Ihre Server-Konfiguration von JBoss EAP 6 zu JBoss EAP 7 zu migrieren, können Sie entweder das JBoss Server Migration Tool verwenden oder mithilfe der migrate-Operation der Management-CLI eine manuelle Migration durchführen.

JBoss Server Migration Tool

Das JBoss Server Migration Tool, was sich derzeit in der Entwicklung befindet, wird in Zukunft die bevorzugte Methode zur Aktualisierung Ihrer Konfiguration sein, um die neuen Features und Einstellungen in JBoss EAP 7 zu implementieren und gleichzeitig Ihre vorhandene Konfiguration beizubehalten.

migrate-Operation der Management-CLI

Sie können die migrate-Operation der Management-CLI verwenden, um die Subsysteme jacorb, messaging und web in der JBoss EAP 6 Serverkonfigurationsdatei zu aktualisieren, sodass diese unter der neuen Release laufen können. Beachten Sie jedoch, dass das Ergebnis keine vollständige JBoss EAP 7 Konfiguration darstellt. Zum Beispiel:

  • Die Operation aktualisiert nicht die vorhandenen Einstellungen des remote-Protokolls und -Ports auf das neue http-remoting-Protokoll und die neuen Porteinstellungen für JBoss EAP 7.
  • Die Konfiguration enthält nicht die neuen JBoss EAP Subsysteme oder Funktionen wie beispielsweise geclusterte Singleton-Deployments oder das ordnungsgemäße Beenden.
  • Die Konfiguration umfasst nicht die neuen Java EE 7 Funktionen wie zum Beispiel Batch-Verarbeitung.
  • Die migrate-Operation migriert nicht die Konfiguration des ejb3-Subsystems. Weitere Informationen über mögliche EJB-Migrationsprobleme finden Sie unter Änderungen der EJB-Serverkonfiguration.

Weitere Informationen über die Verwendung der migrate-Operation zur Migration der Serverkonfiguration finden Sie unter migrate-Operation der Management-CLI.

4.2. migrate-Operation der Management-CLI

Sie können die Management-CLI dazu verwenden, um Ihre JBoss EAP 6 Serverkonfigurationsdateien für die Verwendung mit JBoss EAP 7 zu aktualisieren. Die Management-CLI bietet eine migrate-Operation, um automatisch die Subsysteme jacorb, messaging und web von der vorherigen Release auf die neue Konfiguration zu aktualisieren. Sie können auch die Operation describe-migration für die Subsysteme jacorb, messaging und web ausführen, um die vorgeschlagenen Konfigurationsänderungen zu überprüfen, bevor Sie die Migration durchführen. Es gibt keinen Ersatz für die Subsysteme cmp, jaxr und threads, weshalb diese aus der Serverkonfiguration entfernt werden müssen.

Wichtig

Siehe Optionen zur Migration der Serverkonfiguration für Einschränkungen der migrate-Operation. Das JBoss Server Migration Tool, was sich derzeit in der Entwicklung befindet, wird in Zukunft die bevorzugte Methode zur Aktualisierung Ihrer Konfiguration sein, um die neuen Features und Einstellungen in JBoss EAP 7 zu implementieren und gleichzeitig Ihre vorhandene Konfiguration beizubehalten.

Tabelle 4.1. Migration von Subsystemen und Management-CLI-Operation

JBoss EAP 6 SubsystemJBoss EAP 7 SubsystemManagement-CLI-Operation

cmp

kein Ersatz

remove

jacorb

iiop-openjdk

migrate

jaxr

kein Ersatz

remove

messaging

messaging-activemq

migrate

threads

kein Ersatz

remove

web

undertow

migrate

Starten des Servers und der Management-CLI

Folgen Sie den nachstehenden Schritten, um Ihre JBoss EAP 6 Serverkonfiguration für die Ausführung auf JBoss EAP 7 zu aktualisieren.

  1. Bevor Sie beginnen, werfen Sie einen Blick auf Sichern wichtiger Daten und Prüfen des Serverstatus. Dort finden Sie wichtige Informationen über die Vorbereitung des Servers und die Sicherung der richtigen Daten.
  2. Starten Sie den JBoss EAP 7 Server mit der JBoss EAP 6 Konfiguration.

    1. Sichern Sie die JBoss EAP 7 Serverkonfigurationsdateien.
    2. Kopieren Sie die Konfigurationsdatei von der vorherigen Release in das JBoss EAP 7 Verzeichnis.

      $ cp EAP6_HOME/standalone/configuration/standalone-full.xml EAP7_HOME/standalone/configuration
    3. Navigieren Sie zum JBoss EAP 7 Installationsverzeichnis und starten Sie den Server mit dem Parameter --admin-only.

      $ bin/standalone.sh -c standalone-full.xml --admin-only
      Anmerkung

      Sie werden die folgenden org.jboss.as.controller.management-operation Fehlermeldungen im Serverprotokoll sehen, wenn Sie den Server starten. Diese Fehler sind normal und zeigen an, dass die Konfigurationen der alten Subsysteme entfernt oder auf JBoss EAP 7 migriert werden müssen.

      • WFLYCTL0402: Untersysteme [cmp], die von der veralteten Erweiterung 'org.jboss.as.cmp' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
      • WFLYCTL0402: Untersysteme [jacorb], die von der veralteten Erweiterung 'org.jboss.as.jacorb' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
      • WFLYCTL0402: Untersysteme [jaxr], die von der veralteten Erweiterung 'org.jboss.as.jaxr' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
      • WFLYCTL0402: Untersysteme [messaging], die von der veralteten Erweiterung 'org.jboss.as.messaging' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
      • WFLYCTL0402: Untersysteme [threads], die von der veralteten Erweiterung 'org.jboss.as.threads' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
      • WFLYCTL0402: Untersysteme [web], die von der veralteten Erweiterung 'org.jboss.as.web' bereitgestellt werden, werden von Servern dieser Version nicht unterstützt. Sowohl das Untersystem als auch die Erweiterung müssen entfernt oder migriert werden, ehe der Server funktionieren kann.
  3. Öffnen Sie ein neues Terminal, navigieren Sie zum JBoss EAP 7 Installationsverzeichnis und starten Sie das Management-CLI mit den Parametern --controller=remote://localhost:9999.

    $ bin/jboss-cli.sh --connect --controller=remote://localhost:9999

Migrieren der JacORB-, Messaging- und Web-Subsysteme

  1. Um die Konfigurationsänderungen, die an den Subsystemen vorgenommen werden, vor der Migration zu überprüfen, führen Sie die Operation describe-migration aus.

    Die describe-migration-Operation verwendet die folgende Syntax.

    /subsystem=SUBSYSTEM_NAME:describe-migration

    Das folgende Beispiel beschreibt die Konfigurationsänderungen, die an der JBoss EAP 6.4 standalone-full.xml Konfigurationsdatei vorgenommen werden, wenn diese zu JBoss EAP 7 migriert wird. Einige Einträge wurden zugunsten der Lesbarkeit und Platzersparnis aus der Ausgabe entfernt.

    Beispiel: describe-migration Operation

    [standalone@localhost:9999 /] /subsystem=messaging:describe-migration
    {
        "outcome" => "success",
        "result" => {
            "migration-warnings" => [],
            "migration-operations" => [
                {
                    "operation" => "add",
                    "address" => [("extension" => "org.wildfly.extension.messaging-activemq")],
                    "module" => "org.wildfly.extension.messaging-activemq"
                },
                {
                    "operation" => "add",
                    "address" => [("subsystem" => "messaging-activemq")]
                },
                <!-- *** Entries removed for readability *** -->
                {
                    "operation" => "remove",
                    "address" => [("subsystem" => "messaging")]
                },
                {
                    "operation" => "remove",
                    "address" => [("extension" => "org.jboss.as.messaging")]
                }
            ]
        }
    }

  2. Führen Sie die migrate-Operation aus, um die Subsystemkonfiguration zu dem Subsystem zu migrieren, das dieses in JBoss EAP 7 ersetzt. Die Operation verwendet die folgende Syntax.

    /subsystem=SUBSYSTEM_NAME:migrate
    Anmerkung

    Die Operationen describe-migration und migrate des messaging-Subsystems ermöglichen Ihnen die Übergabe eines Parameters, um den Zugriff von älteren Clients zu konfigurieren. Weitere Informationen über die Befehlssyntax finden Sie unter Migration und Aufwärtskompatibilität des Messaging-Subsystems.

  3. Überprüfen Sie die Ausgabe und das Ergebnis des Befehls. Vergewissern Sie sich, dass die Operation erfolgreich abgeschlossen wurde und es keine »migration-warning«-Einträge gibt. Das bedeutet, dass die Migrationskonfiguration für das Subsystem vollständig ist.

    Beispiel: Erfolgreiche migrate-Operation ohne Warnungen

    [standalone@localhost:9999 /] /subsystem=messaging:migrate
    {
        "outcome" => "success",
        "result" => {"migration-warnings" => []}
    }

    Falls Sie »migration-warnings«-Einträge im Protokoll entdecken, bedeutet dies, dass die Migration der Serverkonfiguration erfolgreich abgeschlossen wurde, jedoch nicht alle Elemente und Attribute migriert werden konnten. Sie müssen den Empfehlungen der »migration-warnings« folgen und zusätzliche Management-CLI-Befehle ausführen, um diese Konfigurationen anzupassen. Nachfolgend sehen Sie ein Beispiel für eine migrate-Operation, die »migration-warnings« ausgibt.

    Beispiel: migrate-Operation mit Warnungen

    [standalone@localhost:9999 /] /subsystem=messaging:migrate
    {
        "outcome" => "success",
        "result" => {"migration-warnings" => [
            "WFLYMSG0080: Could not migrate attribute group-address from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupB\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group.",
            "WFLYMSG0080: Could not migrate attribute group-port from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupB\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group.",
            "WFLYMSG0080: Could not migrate attribute local-bind-address from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupA\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group.",
            "WFLYMSG0080: Could not migrate attribute local-bind-port from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupA\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group.",
            "WFLYMSG0080: Could not migrate attribute group-address from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupA\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group.",
            "WFLYMSG0080: Could not migrate attribute group-port from resource [
        (\"subsystem\" => \"messaging-activemq\"),
        (\"server\" => \"default\"),
        (\"broadcast-group\" => \"groupA\")
    ]. Use instead the socket-binding attribute to configure this broadcast-group."
        ]}
    }

    Anmerkung
  4. Überprüfen Sie die Serverkonfigurationsdatei, um zu verifizieren, dass die Erweiterung, das Subsystem und der Namespace aktualisiert wurden und das vorhandene Subsystem zu JBoss EAP 7 migriert wurde.

    Anmerkung

    Sie müssen diesen Vorgang für jedes der Subsysteme jacorb, messaging und web wiederholen, indem Sie die folgenden Befehle ausführen.

    /subsystem=jacorb:migrate
    /subsystem=messaging:migrate
    /subsystem=web:migrate
  5. Entfernen Sie die Subsysteme cmp, jaxr und threads und Erweiterungen aus der Serverkonfiguration.

    Während Sie noch am Management-CLI-Prompt sind, entfernen Sie die obsoleten Subsysteme cmp, jaxr und threads, indem Sie die folgenden Befehle ausführen.

    /subsystem=cmp:remove
    /extension=org.jboss.as.cmp:remove
    /subsystem=jaxr:remove
    /extension=org.jboss.as.jaxr:remove
    /subsystem=threads:remove
    /extension=org.jboss.as.threads:remove
Wichtig

Sie müssen die Subsysteme messaging, jacorb und web migrieren und die Erweiterungen und Subsysteme cmp, jaxr und threads entfernen, bevor Sie den Server für den normalen Betrieb neu starten können. Falls Sie den Server neu starten müssen, bevor Sie diesen Vorgang abgeschlossen haben, dann geben Sie den Parameter --admin-only auf der Server-Startbefehlszeile an. Dies erlaubt es Ihnen, mit den Konfigurationsänderungen fortzufahren.

4.3. Geänderte Präfixe für Protokolleinträge

Protokollnachrichten tragen ein Präfix mit dem Projektcode für das Subsystem, das die Nachricht meldet. Die Präfixe für alle Protokolleinträge haben sich in JBoss EAP 7 geändert.

For a complete list of the new log message project code prefixes used in JBoss EAP 7, see Project Codes Used in JBoss EAP in the JBoss EAP Development Guide.

4.4. Änderungen der Webserverkonfiguration

4.4.1. Ersetzen des Web-Subsystems durch Undertow

Undertow ersetzt JBoss Web als Webserver in JBoss EAP 7. Das bedeutet, dass die Konfiguration des alten web-Subsystems zur neuen JBoss EAP 7 undertow-Subsystemkonfiguration migriert werden muss.

  • Der Namespace urn:jboss:domain:web:2.2 der Subsystemkonfiguration in der Serverkonfigurationsdatei wurde ersetzt durch den Namespace urn:jboss:domain:undertow:3.1.
  • Das Erweiterungsmodul org.jboss.as.web in EAP_HOME/modules/system/layers/base/ wurde ersetzt durch das Erweiterungsmodul org.wildfly.extension.undertow.

Sie können die migrate-Operation der Management-CLI zur Migration des web-Subsystems zu undertow in der Serverkonfigurationsdatei verwenden. Beachten Sie jedoch, dass diese Operation nicht dazu in der Lage ist, sämtliche Konfigurationen des JBoss Web-Subsystems zu migrieren. Falls Sie »migration-warning«-Einträge sehen, müssen Sie zusätzliche Management-CLI-Befehle ausführen, um diese Konfigurationen zu Undertow zu migrieren. Weitere Informationen über die migrate-Operation der Management-CLI finden Sie unter migrate-Operation der Management-CLI.

Nachfolgend sehen Sie ein Beispiel der standardmäßigen Konfiguration für das web-Subsystem in JBoss EAP 6.

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <alias name="example.com"/>
    </virtual-server>
</subsystem>

Nachfolgend sehen Sie ein Beispiel der standardmäßigen Konfiguration für das undertow-Subsystem in JBoss EAP 6.

<subsystem xmlns="urn:jboss:domain:undertow:3.1">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https"/>
        <host name="default-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
        </host>
    </server>
    <servlet-container name="default">
        <jsp-config/>
        <websockets/>
    </servlet-container>
    <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    </handlers>
    <filters>
        <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
        <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    </filters>
</subsystem>

4.4.2. Migrieren von JBoss Web Rewrite-Bedingungen

Die migrate-Operation der Management-CLI ist nicht dazu in der Lage, automatisch »rewrite«-Bedingungen zu migrieren. Diese werden stattdessen als »migration-warnings« gemeldet und müssen manuell migriert werden. Sie können eine äquivalente Konfiguration in JBoss EAP 7 erstellen, indem Sie Prädikat-Attribute und Handler verwenden; für weitere Informationen diesbezüglich siehe Undertow Predicates Attributes and Handlers.

Nachfolgend sehen Sie ein Beispiel einer Konfiguration für das web-Subsystem in JBoss EAP 6, die eine rewrite-Konfiguration beinhaltet.

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default" native="false">
    <virtual-server name="default" enable-welcome-root="true">
        <alias name="localhost"/>
        <rewrite name="test" pattern="(.*)/toberewritten/(.*)" substitution="$1/rewritten/$2" flags="NC"/>
        <rewrite name="test2" pattern="(.*)" substitution="-" flags="F">
            <condition name="get" test="%{REQUEST_METHOD}" pattern="GET"/>
            <condition name="andCond" test="%{REQUEST_URI}" pattern=".*index.html" flags="NC"/>
        </rewrite>
    </virtual-server>
</subsystem>

Folgen Sie den Anweisungen unter migrate-Operation der Management-CLI, um Ihren Server und die Management-CLI zu starten, und migrieren Sie anschließend die Konfigurationsdatei für das web-Subsystem mithilfe des folgenden Befehls.

/subsystem=web:migrate

Die folgenden »migration-warnings« werden gemeldet, wenn Sie die migrate-Operation auf der obigen Konfiguration ausführen.

/subsystem=web:migrate
{
    "outcome" => "success",
    "result" => {"migration-warnings" => [
        "WFLYWEB0002: Could not migrate resource {
    \"pattern\" => \"(.*)\",
    \"substitution\" => \"-\",
    \"flags\" => \"F\",
    \"operation\" => \"add\",
    \"address\" => [
        (\"subsystem\" => \"web\"),
        (\"virtual-server\" => \"default-host\"),
        (\"rewrite\" => \"test2\")
    ]
}",
        "WFLYWEB0002: Could not migrate resource {
    \"test\" => \"%{REQUEST_METHOD}\",
    \"pattern\" => \"GET\",
    \"flags\" => undefined,
    \"operation\" => \"add\",
    \"address\" => [
        (\"subsystem\" => \"web\"),
        (\"virtual-server\" => \"default-host\"),
        (\"rewrite\" => \"test2\"),
        (\"condition\" => \"get\")
    ]
}",
        "WFLYWEB0002: Could not migrate resource {
    \"test\" => \"%{REQUEST_URI}\",
    \"pattern\" => \".*index.html\",
    \"flags\" => \"NC\",
    \"operation\" => \"add\",
    \"address\" => [
        (\"subsystem\" => \"web\"),
        (\"virtual-server\" => \"default-host\"),
        (\"rewrite\" => \"test2\"),
        (\"condition\" => \"andCond\")
    ]
}"
    ]}
}

Wenn Sie die Serverkonfigurationsdatei überprüfen, sehen Sie die folgende Konfiguration für das undertow-Subsystem.

Anmerkung

Die rewrite-Konfiguration wurde weggelassen.

<subsystem xmlns="urn:jboss:domain:undertow:3.1">
     <buffer-cache name="default"/>
     <server name="default-server">
         <http-listener name="http" socket-binding="http"/>
         <host name="default-host" alias="localhost, example.com">
             <location name="/" handler="welcome-content"/>
         </host>
     </server>
     <servlet-container name="default">
         <jsp-config/>
     </servlet-container>
     <handlers>
         <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
     </handlers>
 </subsystem>

Verwenden Sie die Management-CLI, um den Filter anzulegen, der die rewrite-Konfiguration im undertow-Subsystem ersetzen soll. Für jeden Befehl sollten Sie die Meldung »{"outcome" ⇒ "success"}« erhalten.

# Create the filters
/subsystem=undertow/configuration=filter/expression-filter="test1":add(expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')")
/subsystem=undertow/configuration=filter/expression-filter="test2":add(expression="method('GET') and path('.*index.html') -> response-code(403)")

# Add the filters to the default server
/subsystem=undertow/server=default-server/host=default-host/filter-ref="test1":add
/subsystem=undertow/server=default-server/host=default-host/filter-ref="test2":add

Überprüfen Sie die aktualisierte Serverkonfigurationsdatei. Das JBoss Web-Subsystem ist nun vollständig migriert und im undertow-Subsystem konfiguriert.

<subsystem xmlns="urn:jboss:domain:undertow:3.1">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="http" socket-binding="http"/>
        <host name="default-host" alias="localhost, example.com">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="test1"/>
            <filter-ref name="test2"/>
        </host>
    </server>
    <servlet-container name="default">
        <jsp-config/>
    </servlet-container>
    <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    </handlers>
    <filters>
        <expression-filter name="test1" expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')"/>
        <expression-filter name="test2" expression="method('GET') and path('.*index.html') -> response-code(403)"/>
    </filters>
</subsystem>

For more information about how to configure filters and handlers using the management CLI, see Configuring the Web Server in the JBoss EAP 7 Configuration Guide.

4.4.3. Migrieren von JBoss Web Systemeigenschaften

In der vorherigen Release von JBoss EAP konnte mithilfe von Systemeigenschaften das standardmäßige Verhalten von JBoss Web verändert werden. Informationen darüber, wie Sie dasselbe Verhalten in Undertow konfigurieren können, finden Sie unter Übersicht über das Migrieren von JBoss Web Systemeigenschaften

4.4.4. Migrate JBoss Web jboss-web.xml Overlay

In JBoss EAP 6, JBoss Web supported the ability to specify additional static files for a web application using the overlay element in the jboss-web.xml file. This feature did not actually overlay existing files, but instead added static files to a deployment outside of the WAR archive.

In the following jboss-web.xml file example, /tmp/mycontents/test.html was returned by the JBoss EAP 6 server when you accessed the URL http://localhost:8080/example/test.html.

<jboss-web>
    <context-root>/example</context-root>
    <overlay>/tmp/mycontents/</overlay>
</jboss-web>

Undertow, which replaces JBoss Web in JBoss EAP 7, does not support the jboss-web.xml file overlay feature.

4.4.5. Migrieren von globalen Valves

Frühere Versionen von JBoss EAP unterstützten Valves. Valves sind angepasste Klassen, die in die anfrageverarbeitende Pipeline für eine Applikation vor Servlet-Filtern eingefügt werden, um Änderungen an der Anfrage durchzuführen oder zusätzliche Verarbeitungen durchzuführen.

  • Globale Valves werden in die anfrageverarbeitende Pipeline für alle bereitgestellten Applikationen eingefügt und werden in der Serverkonfigurationsdatei konfiguriert.
  • Authenticator Valves authentifizieren die Berechtigungsnachweise der Anfrage.
  • Angepasste Applikations-Valves werden erstellt, indem die Klasse org.apache.catalina.valves.ValveBase erweitert und im Element <valve> der Deskriptorklasse jboss-web.xml konfiguriert wird. Diese Valves müssen manuell migriert werden.

Dieser Abschnitt beschreibt die Migration von globalen Valves. Die Migration von angepassten und Authenticator Valves wird im Abschnitt Migrieren von angepassten Applikations-Valves dieses Handbuchs erläutert.

Undertow, das JBoss Web in JBoss EAP 7 ersetzt, unterstützt keine globalen Valves. Sie sollten jedoch eine ähnliche Funktion erreichen können mithilfe von Undertow-Handlern. Undertow enthält eine Reihe von integrierten Handlern, die allgemeine Funktionen bereitstellen. Es bietet auch die Möglichkeit zur Erstellung von angepassten Handlern, die als Ersatz für die Funktionen angepasster Valves dienen können.

Falls Ihre Applikation Valves verwendet, müssen Sie diese durch den jeweiligen Undertow Handler-Code ersetzen, um dieselbe Funktionalität zu erreichen, wenn Sie zu JBoss EAP 7 migrieren.

For more information about how to configure handlers, see Configuring Handlers in the JBoss EAP 7 Configuration Guide.

For more information about how to configure filters, see Configuring Filters in the JBoss EAP 7 Configuration Guide.

Migrieren von JBoss Web Valves

Die folgende Tabelle führt die Valves auf, die in der vorherigen Release von JBoss EAP von JBoss Web bereitgestellt wurden, sowie die jeweiligen integrierten Handler in Undertow. Die JBoss Web Valves befinden sich im Paket org.apache.catalina.valves.

Tabelle 4.2. Zuordnung von Valves zu Handlern

ValveHandler

AccessLogValve

io.undertow.server.handlers.accesslog.AccessLogHandler

CrawlerSessionManagerValve

io.undertow.servlet.handlers.CrawlerSessionManagerHandler

ExtendedAccessLogValve

io.undertow.server.handlers.accesslog.AccessLogHandler

JDBCAccessLogValve

Siehe Manuelles Migrationsverfahren für JDBCAccessLogValve unten für Anweisungen.

RemoteAddrValve

io.undertow.server.handlers.IPAddressAccessControlHandler

RemoteHostValve

io.undertow.server.handlers.AccessControlListHandler

RemoteIpValve

io.undertow.server.handlers.ProxyPeerAddressHandler

RequestDumperValve

io.undertow.server.handlers.RequestDumpingHandler

RewriteValve

Siehe Migrieren von JBoss Web Rewrite-Bedingungen für Anweisungen zur manuellen Migration dieser Valves

StuckThreadDetectionValve

io.undertow.server.handlers.StuckThreadDetectionHandler

Sie können die migrate-Operation der Management-CLI verwenden, um automatisch globale Valves zu migrieren, welche die folgenden Kriterien erfüllen:

  • Sie beschränken sich auf die in der obigen Tabelle aufgeführten Valves, die keine manuelle Verarbeitung erfordern.
  • Sie müssen im web-Subsystem der Serverkonfigurationsdatei definiert sein.

Weitere Informationen über die migrate-Operation der Management-CLI finden Sie unter migrate-Operation der Management-CLI .

Manuelles Migrationsverfahren für JDBCAccessLogValve

Die Valve org.apache.catalina.valves.JDBCAccessLogValve ist eine Ausnahme und kann nicht automatisch zu io.undertow.server.handlers.JDBCLogHandler migriert werden. Folgen Sie den nachstehenden Anweisungen, um die folgende Beispiel-Valve zu migrieren.

<valve name="jdbc" module="org.jboss.as.web" class-name="org.apache.catalina.valves.JDBCAccessLogValve">
    <param param-name="driverName" param-value="com.mysql.jdbc.Driver" />
    <param param-name="connectionName" param-value="root" />
    <param param-name="connectionPassword" param-value="password" />
    <param param-name="connectionURL" param-value="jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull" />
    <param param-name="format" param-value="combined" />
</valve>
  1. Erstellen Sie ein Treibermodul für die Datenbank, welche die Protokolleinträge speichern soll.
  2. Konfigurieren Sie die Datenquelle für die Datenbank und fügen Sie den Treiber zur Liste der verfügbaren Treiber im datasources-Subsystem hinzu.

    <datasources>
        <datasource jndi-name="java:jboss/datasources/accessLogDS" pool-name="accessLogDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull</connection-url>
            <driver>mysql</driver>
            <security>
               <user-name>root</user-name>
               <password>Password1!</password>
            </security>
        </datasource>
        ...
        <drivers>
            <driver name="mysql" module="com.mysql">
                <driver-class>com.mysql.jdbc.Driver</driver-class>
            </driver>
        ...
        </drivers>
    </datasources>
  3. Konfigurieren Sie einen expression-filter im undertow-Subsystem mit dem folgenden Ausdruck: jdbc-access-log(datasource=DATASOURCE_JNDI_NAME).

    <filters>
        <expression-filter name="jdbc-access" expression="jdbc-access-log(datasource='java:jboss/datasources/accessLogDS')" />
        ...
    </filters>

4.5. Änderungen der JGroups-Serverkonfiguration

4.5.1. Private Netzwerkschnittstelle als Standard in JGroups

In der Standardkonfiguration von JBoss EAP 6 verwendete JGroups die public-Schnittstelle, die im Abschnitt <interfaces> der Serverkonfigurationsdatei definiert war.

Da empfohlen wird, eine dedizierte Netzwerkschnittstelle zu nutzen, verwendet JGroups standardmäßig nunmehr die neue private-Schnittstelle, die in JBoss EAP 7 im Abschnitt <interfaces> der Serverkonfigurationsdatei definiert ist.

4.5.2. Änderungen der JGroups-Channels

JGroups bietet Unterstützung für Gruppenkommunikation von HA-Services in Form von JGroups-Channels. JBoss EAP 7 führt <channel>-Elemente zum jgroups-Subsystem in der Serverkonfigurationsdatei ein. Mithilfe der Management-CLI können Sie die Konfiguration von JGroups-Channels hinzufügen, entfernen oder ändern.

For more information about how to configure JGroups, see Cluster Communication with JGroups in the JBoss EAP Configuration Guide.

4.6. Änderungen der Infinispan-Serverkonfiguration

4.6.1. Änderungen der standardmäßigen Infinispan-Cache-Konfiguration

In JBoss EAP 6, the default clustered caches for web session replication and EJB replication were replicated ASYNC caches. This has changed in JBoss EAP 7. The default clustered caches are now distributed ASYNC caches. The replicated caches are no longer even configured by default. See Configure the Cache Mode in the JBoss EAP Configuration Guide for information about how to add a replicated cache and make it the default.

Dies betrifft Sie nur, wenn Sie die neue Standardkonfiguration von JBoss EAP 7 verwenden. Falls Sie die Konfiguration von JBoss EAP 6 migrieren, bleibt die Konfiguration des infinispan-Subsystems erhalten.

4.6.2. Änderungen der Infinispan-Cache-Strategie

Das Verhalten der ASYNC-Cache-Strategie hat sich in JBoss EAP 7 geändert.

In JBoss EAP 6 erfolgten Lesevorgänge im ASYNC-Cache ohne Sperre. Obwohl dies nie ein Blockieren zur Folge hatte, war dieses Verhalten anfällig für das Lesen veralteter Daten, beispielsweise beim Failover, denn nachfolgende Anfragen für denselben Benutzer durften starten, bevor die vorherige Anfrage abgeschlossen war. Diese Toleranz ist im verteilten Modus nicht akzeptabel, da Änderungen in der Cluster-Topologie Auswirkungen auf die Session-Affinität haben kann und leicht zu veralteten Daten führen kann.

In JBoss EAP 7 erfordern Lesevorgänge im ASYNC-Cache Sperren. Da nun neue Anfragen vom selben Benutzer gesperrt werden, bis die vorherige Replikation abgeschlossen ist, ist das Lesen veralteter Daten somit ausgeschlossen.

4.7. Änderungen der EJB-Serverkonfiguration

If you use the management CLI migrate operation to upgrade your existing configuration, you might see exceptions in the server log when you deploy your EJB applications.

Wichtig

Falls Sie das JBoss Server Migration Tool verwenden, um Ihre Serverkonfiguration zu aktualisieren, sollte das ejb3-Subsystem korrekt konfiguriert sein und es sollten keine Probleme beim Bereitstellen Ihrer EJB-Applikationen auftreten.

DuplicateServiceException

Die folgende DuplicateServiceException wird durch Änderungen beim Cache-Verhalten in JBoss EAP 7 verursacht.

DuplicateServiceException im Serverprotokoll

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: org.jboss.msc.service.StartException in service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: Failed to start service
...
Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.infinispan.ejb."mdb-1.0-SNAPSHOT.jar".config is already registered

Sie müssen den Cache neu konfigurieren, um diesen Fehler zu beseitigen.

  1. Folgen Sie den Anweisungen unter Starten des Servers und der Management-CLI.
  2. Führen Sie die folgenden Befehle aus, um das Cache-Verhalten im ejb3-Subsystem neu zu konfigurieren.

    /subsystem=ejb3/file-passivation-store=file:remove
    /subsystem=ejb3/cluster-passivation-store=infinispan:remove
    /subsystem=ejb3/passivation-store=infinispan:add(cache-container=ejb, max-size=10000)
    
    /subsystem=ejb3/cache=passivating:remove
    /subsystem=ejb3/cache=clustered:remove
    /subsystem=ejb3/cache=distributable:add(passivation-store=infinispan, aliases=[passivating, clustered])

4.8. Änderungen der Messaging-Serverkonfiguration

In JBoss EAP 7 ersetzt ActiveMQ Artemis nun HornetQ als JMS-Support-Provider. Dieser Abschnitt beschreibt, wie die Konfiguration und die zugehörigen Messaging-Daten migriert werden können.

4.8.1. Änderungen der Messaging-Subsystem-Serverkonfiguration

Die Modulerweiterung org.jboss.as.messaging in EAP_HOME/modules/system/layers/base/ wurde ersetzt durch das Erweiterungsmodul org.wildfly.extension.messaging-activemq.

Der Namespace urn:jboss:domain:web:2.2 der Subsystemkonfiguration wurde ersetzt durch den Namespace urn:jboss:domain:messaging-activemq:1.0.

Management-Modell

In den meisten Fällen wurde versucht, die Element- und Attributnamen möglichst unverändert zu jenen der vorherigen Releases zu halten. Die folgende Tabelle zeigt einige der Änderungen.

Tabelle 4.3. Zuordnung der Messaging-Attribute

HornetQ-NameActiveMQ-Name

hornetq-server

server

hornetq-serverType

serverType

connectors

connector

discovery-group-name

discovery-group

Die Management-Operationen, die auf dem neuen messaging-activemq-Subsystem aufgerufen werden, haben sich geändert von /subsystem=messaging/hornetq-server= zu /subsystem=messaging-activemq/server=.

Sie können eine vorhandene JBoss EAP 6 messaging-Subsystemkonfiguration zum messaging-activemq-Subsystem auf einem JBoss EAP 7 Server migrieren, indem Sie dessen migrate-Operation ausführen.

/subsystem=messaging:migrate

Before you execute the migrate operation, you can invoke the describe-migration operation to review the list of management operations that will be performed to migrate from the existing JBoss EAP 6 messaging subsystem configuration to the messaging-activemq subsystem on the JBoss EAP 7 server.

/subsystem=messaging:describe-migration

Die Operationen migrate und describe-migration zeigen auch eine Liste mit migration-warnings für Ressourcen oder Attribute an, die nicht automatisch migriert werden können.

Migration und Aufwärtskompatibilität des Messaging-Subsystems

Die Operationen describe-migration und migrate für das messaging-Subsystem bieten einen zusätzlichen Konfigurationsparameter. Falls Sie das Messaging so konfigurieren möchten, dass alte JBoss EAP 6 Clients sich mit dem JBoss EAP 7 Server verbinden dürfen, können Sie die boolesche Variable add-legacy-entries wie folgt den Operationen describe-migration oder migrate hinzufügen.

/subsystem=messaging:describe-migration(add-legacy-entries=true)
/subsystem=messaging:migrate(add-legacy-entries=true)

Falls die boolesche Variable add-legacy-entries auf true gesetzt ist, erstellt das messaging-activemq-Subsystem die Ressource legacy-connection-factory und fügt legacy-entries zu den Ressourcen jms-queue und jms-topic hinzu.

Falls die boolesche Variable add-legacy-entries auf false gesetzt ist, werden keine alten Ressourcen im messaging-activemq-Subsystem erstellt, weshalb alte JMS-Clients nicht mit den JBoss EAP 7 Servern kommunizieren werden können. Dies ist der Standardwert.

For more information about forward and backward compatibility see the Backward and Forward Compatibility in Configuring Messaging for JBoss EAP.

Weitere Informationen über die Operationen migrate und describe-migration der Management-CLI finden Sie unter migrate-Operation der Management-CLI .

Geändertes Verhalten des forward-when-no-consumers Attributs

Das Verhalten des Attributs forward-when-no-consumers hat sich in JBoss EAP 7 geändert.

Wenn forward-when-no-consumers in JBoss EAP 6 auf false gesetzt war und keine Verbraucher im Cluster vorhanden waren, dann wurden Nachrichten auf alle Knoten in einem Cluster weiterverteilt.

Dieses Verhalten hat sich in JBoss EAP 7 geändert. Wenn forward-when-no-consumers auf false gesetzt ist und keine Verbraucher im Cluster vorhanden sind, dann werden Nachrichten nicht weiterverteilt. Stattdessen verbleiben die Nachrichten auf dem Knoten, an den sie gesendet wurden.

Änderungen der Messaging-Subsystem-XML-Konfiguration

Die XML-Konfiguration hat sich mit dem neuen messaging-activemq-Subsystem grundlegend geändert und bietet nun ein XML-Schema, das eher im Einklang mit anderen JBoss EAP Subsystemen steht.

It is strongly advised that you do not attempt to modify the JBoss EAP messaging subsystem XML configuration to conform to the new messaging-activemq subsystem. Instead, invoke the legacy subsystem migrate operation. This operation will write the XML configuration of the new messaging-activemq subsystem as a part of its execution.

4.8.2. Migrieren von Messaging-Daten

Aufgrund des Wechsels von HornetQ zu ActiveMQ Artemis als JMS-Support-Provider haben sich sowohl das Format als auch der Speicherort für die Messaging-Daten in JBoss EAP 7 geändert.

Sie können eine der beiden folgenden Herangehensweisen wählen, um die Daten zu migrieren:

Unter Zuordnung der Messaging-Verzeichnisnamen finden Sie Details über die Änderungen an den Verzeichnisnamen für Messaging-Daten zwischen den Releases.

4.8.2.1. Migrieren von Messaging-Daten mittels Export und Import

Bei dieser Herangehensweise exportieren Sie die Daten der vorherigen Release mittels HornetQ exporter-Dienstprogramm. Anschließend importieren Sie die als XML formatierte Ausgabedatei mittels import-journal-Operation.

Warnung

Derzeit gibt es ein bekanntes Problem bei dieser Herangehensweise. Den aktuellen Status dieses Problems können Sie unter JBEAP-4407 - Consumer crashes with IndexOutOfBoundsException when reading large messages from imported journal einsehen.

Exportieren der Messaging-Daten der vorherigen Release
Wichtig

Der JBoss EAP 6 Server muss angehalten werden, bevor Sie die Messaging-Daten exportieren.

Das HornetQ exporter-Dienstprogramm generiert und exportiert die Messaging-Daten von JBoss EAP 6 in eine XML-formatierte Datei. Für diesen Befehl müssen Sie die Pfade zu den erforderlichen HornetQ JARs angeben, die in JBoss EAP 6 enthalten sind, diese Pfade dann an die Ordner messagingbindings/, messagingjournal/, messagingpaging/ und messaginglargemessages/ der vorherigen Release als Parameter übergeben, und schließlich eine Ausgabedatei angeben, in welche die exportierten XML-Daten geschrieben werden sollen.

Nachfolgend sehen Sie die Syntax für das HornetQ exporter-Dienstprogramm.

java -jar -mp MODULE_PATH org.hornetq.exporter MESSAGING_BINDINGS_DIRECTORY MESSAGING_JOURNAL_DIRECTORY MESSAGING_PAGING_DIRECTORY MESSAGING_LARGE_MESSAGES_DIRECTORY > OUTPUT_DATA.xml

Erstellen Sie ein angepasstes Modul, um sicherzustellen, dass die richtigen Versionen der HornetQ JARs – einschließlich jeglicher JARs, die im Rahmen von Patches oder Upgrades installiert wurden – geladen und an das exporter-Dienstprogramm übergeben werden. Verwenden Sie einen Texteditor Ihrer Wahl, um eine neue module.xml-Datei im Verzeichnis EAP6_HOME/modules/org/hornetq/exporter/main/ zu erstellen, und kopieren Sie den folgenden Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.hornetq.exporter">
    <main-class name="org.hornetq.jms.persistence.impl.journal.XmlDataExporter"/>
    <properties>
        <property name="jboss.api" value="deprecated"/>
    </properties>
    <dependencies>
        <module name="org.hornetq"/>
    </dependencies>
</module>
Anmerkung

Das angepasste Modul wird im Verzeichnis modules/ erstellt, nicht im Verzeichnis modules/system/layers/base/.

Folgen Sie den nachstehenden Schritten, um die Daten zu exportieren.

  1. Stoppen Sie den JBoss EAP 6 Server.
  2. Erstellen Sie das angepasste Modul wie oben beschrieben.
  3. Führen Sie den folgenden Befehl aus, um die Daten zu exportieren.

    $ java -jar jboss-modules.jar -mp modules/ org.hornetq.exporter standalone/data/messagingbindings/ standalone/data/messagingjournal/ standalone/data/messagingpaging standalone/data/messaginglargemessages/ > OUTPUT_DIRECTORY/OldMessagingData.xml
  4. Vergewissern Sie sich, dass nach Abschluss des Befehls keine Fehler- oder Warnmeldungen im Protokoll verzeichnet wurden.
  5. Verwenden Sie ein Hilfsprogramm für Ihr Betriebssystem, um das XML in der generierten Ausgabedatei zu validieren.
Importieren der XML-formatierten Messaging-Daten

Importieren Sie anschließend die als XML formatierte Ausgabedatei wie folgt mittels der import-journal-Operation.

/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)

4.8.2.2. Migrieren von Messaging-Daten mittels JMS-Bridge

Bei dieser Herangehensweise konfigurieren und implementieren Sie eine JMS-Bridge zum JBoss EAP 7 Server, die Nachrichten von der JBoss EAP 6 HornetQ Warteschlange in die JBoss EAP 7 ActiveMQ Artemis Warteschlange verschiebt.

Eine JMS-Bridge liest Nachrichten von einer Quell-JMS-Warteschlange oder -Topic und schickt sie an eine Ziel-JMS-Warteschlange oder -Topic, die üblicherweise auf einem anderen Server sind. Dies kann dazu verwendet werden, um Meldungen zwischen beliebigen JMS-Server zu überbrücken, sofern diese JMS 1.1 kompatibel sind. Quell- und Ziel-JMS-Ressourcen können über JNDI gesucht werden und die Clientklassen für das JNDI-Lookup müssen in einem Modul zusammengefasst sein. Der Modulname wird dann in der JMS-Bridgekonfiguration deklariert.

Dieser Abschnitt beschreibt, wie Sie die Server konfigurieren und eine JMS-Bridge implementieren, um die Messaging-Daten von JBoss EAP 6 nach JBoss EAP 7 zu übertragen.

Konfigurieren des JBoss EAP 6 Servers
  1. Stoppen Sie den JBoss EAP 6 Server.
  2. Sichern Sie das Journal und die Konfigurationsdateien von HornetQ.

    • Standardmäßig befindet sich das HornetQ-Journal im Verzeichnis EAP6_HOME/standalone/data/.
    • Unter Mapping Messaging Folder Names finden Sie die standardmäßigen Speicherorte der Messaging-Verzeichnisse für jede Release.
  3. Vergewissern Sie sich, dass die InQueue JMS-Warteschlange, die die JMS-Nachrichten enthält, auf dem JBoss EAP 6 Server definiert ist.
  4. Vergewissern Sie sich, dass die messaging-Subsystemkonfiguration einen Eintrag für RemoteConnectionFactory enthält ähnlich dem folgenden:

    <connection-factory name="RemoteConnectionFactory">
        <entries>
            <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
        </entries>
        ...
    </connection-factory>

    Falls sie diesen Eintrag nicht enthält, erstellen Sie ihn mit dem folgenden Management-CLI-Befehl:

    /subsystem=messaging/hornetq-server=default/connection-factory=RemoteConnectionFactory:add(factory-type=XA_GENERIC, connector=[netty], entries=[java:jboss/exported/jms/RemoteConnectionFactory],ha=true,block-on-acknowledge=true,retry-interval=1000,retry-interval-multiplier=1.0,reconnect-attempts=-1)
Konfigurieren des JBoss EAP 7 Servers
  1. Die JMS-Bridgekonfiguration benötigt das org.hornetq-Modul, um mit dem HornetQ-Server der vorherigen Release zu verbinden. Dieses Modul und dessen direkte Abhängigkeiten existieren nicht in JBoss EAP 7, weshalb Sie die folgenden Module aus der vorherigen Release kopieren müssen.

    • Kopieren Sie das org.hornetq-Modul in das JBoss EAP 7 Verzeichnis EAP_HOME/modules/org/.

      • Falls Sie keine Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server: EAP6_HOME/modules/system/layers/base/org/hornetq/
      • Falls Sie Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server: EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/hornetq/
    • Entfernen Sie das <resource-root> für den HornetQ lib-Pfad aus der JBoss EAP 7 EAP_HOME/modules/org/hornetq/main/module.xml-Datei.

      • Falls Sie keine Patches auf das JBoss EAP 6.4 org.hornetq-Modul angewendet haben, entfernen Sie die folgende Zeile aus der Datei:

        <resource-root path="lib"/>
      • Falls Sie Patches auf das JBoss EAP 6.4 org.hornetq-Modul angewendet haben, entfernen Sie die folgenden Zeilen aus der Datei:

        <resource-root path="lib"/>
        <resource-root path="../../../../../org/hornetq/main/lib"/>
        Warnung

        Wenn Sie den HornetQ lib-Pfad resource-root nicht entfernen, wird die Bridge fehlschlagen mit der folgenden Fehlermeldung in der Protokolldatei.

        2016-07-15 09:32:25,660 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("add") failed - address: ([
            ("subsystem" => "messaging-activemq"),
            ("jms-bridge" => "myBridge")
        ]) - failure description: "WFLYMSGAMQ0086: Unable to load module org.hornetq"
    • Kopieren Sie das org.jboss.netty-Modul in das JBoss EAP 7 Verzeichnis EAP_HOME/modules/org/jboss/.

      • Falls Sie keine Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server: EAP6_HOME/modules/system/layers/base/org/jboss/netty/
      • Falls Sie Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server: EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/jboss/netty
  2. Erstellen Sie die JMS-Warteschlange, welche die Nachrichten vom JBoss EAP 6 Server enthalten soll. Nachfolgend sehen Sie ein Beispiel für ein Management-CLI-Befehl, der die JMS-Warteschlange MigratedMessagesQueue zum Empfang der Nachrichten erstellt.

    jms-queue add --queue-address=MigratedMessagesQueue --entries=[jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue]

    Dies erstellt die folgende jms-queue-Konfiguration für den Standardserver im messaging-activemq-Subsystem des JBoss EAP 7 Servers.

    <jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
  3. Vergewissern Sie sich, dass das messaging-activemq-Subsystem default-Server eine Konfiguration für InVmConnectionFactory connection-factory ähnlich der folgenden enthält:

    <connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>

    Falls sie diesen Eintrag nicht enthält, erstellen Sie ihn mit dem folgenden Management-CLI-Befehl:

    /subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
  4. Erstellen und implementieren Sie eine JMS-Bridge, die Nachrichten von der JMS-Warteschlange InQueue liest, die auf dem JBoss EAP 6 Server konfiguriert ist, und diese an die Warteschlange MigratedMessagesQueue überträgt, die auf dem JBoss EAP 7 Server konfiguriert ist.

    /subsystem=messaging-activemq/jms-bridge=myBridge:add(add-messageID-in-header=true,max-batch-time=100,max-batch-size=10,max-retries=-1,failure-retry-interval=1000,quality-of-service=AT_MOST_ONCE,module=org.hornetq,source-destination=jms/queue/InQueue,source-connection-factory=jms/RemoteConnectionFactory,source-context=[("java.naming.factory.initial"=>"org.jboss.naming.remote.client.InitialContextFactory"),("java.naming.provider.url"=>"remote://127.0.0.1:4447")],target-destination=jms/queue/MigratedMessagesQueue,target-connection-factory=java:/ConnectionFactory)

    Dies erstellt die folgende jms-bridge-Konfiguration im messaging-activemq-Subsystem des JBoss EAP 7 Servers.

    <jms-bridge name="myBridge" add-messageID-in-header="true" max-batch-time="100" max-batch-size="10" max-retries="-1" failure-retry-interval="1000" quality-of-service="AT_MOST_ONCE" module="org.hornetq">
        <source destination="jms/queue/InQueue" connection-factory="jms/RemoteConnectionFactory">
            <source-context>
                <property name="java.naming.factory.initial" value="org.jboss.naming.remote.client.InitialContextFactory"/>
                <property name="java.naming.provider.url" value="remote://127.0.0.1:4447"/>
            </source-context>
        </source>
        <target destination="jms/queue/MigratedMessagesQueue" connection-factory="java:/ConnectionFactory"/>
    </jms-bridge>
  5. Falls für JBoss EAP 6 die Sicherheit konfiguriert ist, müssen Sie die JMS-Bridgekonfiguration mit einem <source>-Element konfigurieren, das einen source-context enthält, der die korrekten Werte für Benutzernamen und Password festlegt, die für den JNDI-Lookup bei der Verbindungsherstellung verwendet werden.
Migrieren der Daten
  1. Überprüfen Sie, ob Ihre Angaben für die folgenden Konfigurationen richtig sind.

    • Alle Warteschlangen- und Topic-Namen
    • Die java.naming.provider.url für den JNDI-Lookup
  2. Vergewissern Sie sich, dass Sie das JMS-Ziel auf dem JBoss EAP 7 Server implementiert haben.
  3. Starten Sie sowohl den JBoss EAP 6 als auch den JBoss EAP 7 Server.

4.8.2.3. Zuordnung der Messaging-Verzeichnisnamen

Die folgende Tabelle führt die Messaging-Verzeichnisnamen auf, die in der vorherigen Release verwendet wurden, sowie die zugehörigen Namen, die in der aktuellen Release von JBoss EAP verwendet werden. Die Verzeichnisse sind relativ zum Verzeichnis jboss.server.data.dir, das standardmäßig EAP_HOME/standalone/data/ lautet, sofern nicht anders festgelegt.

JBoss EAP 6 VerzeichnisnameJBoss EAP 7 Verzeichnisname

messagingbindings/

activemq/bindings/

messagingjournal/

activemq/journal/

messaginglargemessages/

activemq/largemessages/

messagingpaging/

activemq/paging/

Anmerkung

The messaginglargemessages/ and messagingpaging/ directories might not be present if there are no large messages or if paging is disabled.

4.8.3. Migrieren von JMS-Zielen

In vorherigen Releases von JBoss EAP wurden JMS-Zielwarteschlangen im <jms-destinations>-Element unter dem <hornetq-server>-Element im messaging-Subsystem konfiguriert.

<hornetq-server>
  ...
  <jms-destinations>
     <jms-queue name="testQueue">
        <entry name="queue/test"/>
         <entry name="java:jboss/exported/jms/queue/test"/>
      </jms-queue>
  </jms-destinations>
  ...
</hornetq-server>

In JBoss EAP 7 wird die JMS-Zielwarteschlange im standardmäßigen <server>-Element des messaging-activemq-Subsystems konfiguriert.

<server name="default">
  ...
  <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/>
  ...
</server>

4.8.4. Migrieren von Messaging-Interzeptoren

Messaging-Interzeptoren haben sich in JBoss EAP 7 grundlegend geändert, da HornetQ durch ActiveMQ Artemis als JMS Messaging Provider ersetzt wurde.

Um beim HornetQ messaging-Subsystem, das in der vorherigen Release von JBoss EAP enthalten war, HornetQ-Interzeptoren zu installieren, mussten Sie diese einem JAR hinzufügen und dann die HornetQ module.xml-Datei bearbeiten.

The messaging-activemq subsystem included in JBoss EAP 7 does not require modification of a module.xml file. User interceptor classes, which now implement the Apache ActiveMQ Artemis Interceptor interface, can now be loaded from any server module. You specify the module from which the interceptor should be loaded in the messaging-activemq subsystem of the server configuration file.

Beispiel-Interzeptor-Konfiguration

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
  <server name="default">
    ...
    <incoming-interceptors>
      <class name="com.mycompany.incoming.myInterceptor" module="com.mycompany" />
      <class name="com.othercompany.incoming.myOtherInterceptor" module="com.othercompany" />
    </incoming-interceptors>
    <outgoing-interceptors>
      <class name="com.mycompany.outgoing.myInterceptor" module="com.mycompany" />
      <class name="com.othercompany.outgoing.myOtherInterceptor" module="com.othercompany" />
    </outgoing-interceptors>
  </server>
</subsystem>

4.8.5. Ersetzen der Netty-Servlet-Konfiguration

In JBoss EAP 6 konnten Sie eine Servlet-Engine für die Arbeit mit dem Netty-Servlet-Transport konfigurieren. Da ActiveMQ Artemis nun HornetQ als integrierten Messaging-Provider in JBoss EAP 7 ersetzt, steht diese Konfiguration nicht mehr zur Verfügung. Sie müssen die Servlet-Konfiguration durch die neuen integrierten http-Connectors und http-Acceptors ersetzen.

4.9. JMX Management Changes

The HornetQ component in JBoss EAP 6 provided its own JMX management; however, it was not recommended and is now deprecated and no longer supported. If you relied on this feature in JBoss EAP 6, you must migrate your management tooling to use either the JBoss EAP management CLI or the JMX management provided with JBoss EAP 7.

You must also upgrade your client libraries to use the jboss-client.jar that ships with JBoss EAP 7.

The following is an example of HornetQ JMX management code that was used in JBoss EAP 6.

JMXConnector connector = null;
try {
    HashMap environment = new HashMap();
    String[] credentials = new String[]{"admin", "Password123!"};
    environment.put(JMXConnector.CREDENTIALS, credentials);

    // HornetQ used the protocol "remoting-jmx" and port "9999"
    JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remoting-jmx://127.0.0.1:9999");

    connector = JMXConnectorFactory.connect(beanServerUrl, environment);
    MBeanServerConnection mbeanServer = connector.getMBeanServerConnection();

    // The JMX object name pointed to the HornetQ JMX management
    ObjectName objectName = new ObjectName("org.hornetq:type=Server,module=JMS");

    // The invoked method name was "listConnectionIDs"
    String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIDs", new Object[]{}, new String[]{});
    for (String connection : connections) {
        System.out.println(connection);
    }
} finally {
    if (connector != null) {
      connector.close();
   }
}

The following is an example of the equivalent code needed for ActiveMQ Artemis in JBoss EAP 7.

JMXConnector connector = null;
try {
    HashMap environment = new HashMap();
    String[] credentials = new String[]{"admin", "Password123!"};
    environment.put(JMXConnector.CREDENTIALS, credentials);

    // ActiveMQ Artemis uses the protocol "remote+http" and port "9990"
    JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remote+http://127.0.0.1:9990");

    connector = JMXConnectorFactory.connect(beanServerUrl, environment);
    MBeanServerConnection mbeanServer = connector.getMBeanServerConnection();

    // The JMX object name points to the new JMX management in the `messaging-activemq` subsystem
    ObjectName objectName = new ObjectName("jboss.as:subsystem=messaging-activemq,server=default");

    // The invoked method name is now "listConnectionIds"
    String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIds", new Object[]{}, new String[]{});
    for (String connection : connections) {
        System.out.println(connection);
    }
} finally {
    if (connector != null) {
      connector.close();
   }
}

Notice that the method names and parameters have changed in the new implementation. You can find the new method names in the JConsole by following these steps.

  1. Connect to the JConsole using the following command.

    EAP_HOME/bin/jconsole.sh
  2. Connect to JBoss EAP local process. Note that it should start with "jboss-modules.jar".
  3. In the MBeans tab, choose jboss.asmessaging-activemqdefaultOperations to display the list of method names and attributes.

4.10. Änderungen der ORB-Serverkonfiguration

Die JacORB-Implementierung wurde in JBoss EAP 7 ersetzt durch eine Downstream-Version von OpenJDK ORB.

Das Erweiterungsmodul org.jboss.as.jacorb in EAP_HOME/modules/system/layers/base/ wurde durch das Erweiterungsmodul org.wildfly.iiop-openjdk ersetzt.

Der Namespace urn:jboss:domain:jacorb:1.4 der Subsystemkonfiguration in der Serverkonfigurationsdatei wurde ersetzt durch den Namespace urn:jboss:domain:iiop-openjdk:1.0.

Nachfolgend sehen Sie ein Beispiel der standardmäßigen Konfiguration für das jacorb-Subsystem in JBoss EAP 6.

<subsystem xmlns="urn:jboss:domain:jacorb:1.4">
    <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl">
        <initializers security="identity" transactions="spec"/>
    </orb>
</subsystem>

Nachfolgend sehen Sie ein Beispiel der standardmäßigen Konfiguration für das iiop-openjdk-Subsystem in JBoss EAP 6.

<subsystem xmlns="urn:jboss:domain:iiop-openjdk:1.0">
    <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl" />
    <initializers security="identity" transactions="spec" />
</subsystem>

Die neue iiop-openjdk-Subsystemkonfiguration akzeptiert nur eine Untergruppe der bisherigen Elemente und Parameter. Nachfolgend sehen Sie ein Beispiel einer Konfiguration für das jacorb-Subsystem in der bisherigen Release von JBoss EAP, die alle gültigen Elemente und Parameter enthält:

<subsystem xmlns="urn:jboss:domain:jacorb:1.4">
   <orb name="JBoss" print-version="off" use-imr="off" use-bom="off"  cache-typecodes="off"
       cache-poa-names="off" giop-minor-version="2" socket-binding="jacorb" ssl-socket-binding="jacorb-ssl">
       <connection retries="5" retry-interval="500" client-timeout="0" server-timeout="0"
           max-server-connections="500" max-managed-buf-size="24" outbuf-size="2048"
           outbuf-cache-timeout="-1"/>
       <initializers security="off" transactions="spec"/>
   </orb>
   <poa monitoring="off" queue-wait="on" queue-min="10" queue-max="100">
       <request-processors pool-size="10" max-threads="32"/>
   </poa>
   <naming root-context="JBoss/Naming/root" export-corbaloc="on"/>
   <interop sun="on" comet="off" iona="off" chunk-custom-rmi-valuetypes="on"
       lax-boolean-encoding="off" indirection-encoding-disable="off" strict-check-on-tc-creation="off"/>
   <security support-ssl="off" add-component-via-interceptor="on" client-supports="MutualAuth"
       client-requires="None" server-supports="MutualAuth" server-requires="None"/>
   <properties>
       <property name="some_property" value="some_value"/>
   </properties>
</subsystem>

Die folgenden Elementparameter werden nicht mehr unterstützt und müssen entfernt werden.

Tabelle 4.4. Zu entfernende Parameter

ElementNicht unterstützte Parameter

<orb>

  • client-timeout
  • max-managed-buf-size
  • max-server-connections
  • outbuf-cache-timeout
  • outbuf-size
  • connection retries
  • retry-interval
  • name
  • server-timeout

<poa>

  • queue-min
  • queue-max
  • pool-size
  • max-threads

Die folgenden on/off-Parameter werden nicht mehr unterstützt und werden nicht migriert, wenn Sie die migrate-Operation der Management-CLI ausführen. Falls diese auf on gesetzt sind, erhalten Sie eine Migrationswarnung. Andere on/off-Parameter, die nicht in dieser Tabelle erwähnt werden, wie z.B. <security support-ssl="on|off">, werden nach wie vor unterstützt und können erfolgreich migriert werden. Der einzige Unterschied besteht darin, dass deren Werte von on/off auf true/false geändert werden.

Tabelle 4.5. Zu deaktivierende oder zu entfernende Parameter

ElementAuf »off« zu setzende Parameter

<orb>

  • cache-poa-names
  • cache-typecodes
  • print-version
  • use-bom
  • use-imr

<interop>

(alle außer sun)

  • comet
  • iona
  • chunk-custom-rmi-valuetypes
  • indirection-encoding-disable
  • lax-boolean-encoding
  • strict-check-on-tc-creation

<poa/>

  • monitoring
  • queue-wait

4.11. Migrieren der Threads-Subsystemkonfiguration

Die JBoss EAP 6 Serverkonfiguration enthielt ein threads-Subsystem, das zur Verwaltung von Thread-Pools in den verschiedenen Subsystemen im Server verwendet wurde.

Das threads-Subsystem steht in JBoss EAP 7 nicht mehr zur Verfügung. Stattdessen ist jedes Subsystem für die Verwaltung seines eigenen Thread-Pools verantwortlich.

For information about how to configure thread pools for the infinispan subsystem, see Configure Infinispan Thread Pools in the JBoss EAP Configuration Guide.

For information about how to configure thread pools for the jgroups subsystem, see Configure JGroups Thread Pools in the JBoss EAP Configuration Guide.

In JBoss EAP 6, you configured thread pools for connectors and listeners for the web subsystem by referencing an executor that was defined in the threads subsystem. In JBoss EAP 7, you now configure thread pools for the undertow subsystem by referencing a worker that is defined in the io subsystem. For more information, see Configuring the IO Subsystem in the JBoss EAP Configuration Guide.

For information about about changes to thread pool configuration in the remoting subsystem, see Migrate the Remoting Subsystem Configuration in this guide, and Configuring the Endpoint in the JBoss EAP Configuration Guide.

4.12. Migrieren der remoting-Subsystemkonfiguration

In JBoss EAP 6 wurde der Thread-Pool für das remoting-Subsystem konfiguriert, indem verschiedene worker-*-Parameter festgelegt wurden. In JBoss EAP 7 wird der Worker-Thread-Pool nicht mehr im remoting-Subsystem konfiguriert, und falls Sie versuchen, die vorhandene Konfiguration zu ändern, erhalten Sie die folgende Meldung.

WFLYRMT0022: Worker-Konfiguration wird nicht mehr verwendet, bitte verwenden Sie Endpunkt-Worker-Konfiguration

In JBoss EAP 7 wurde der Worker-Thread-Pool ersetzt durch eine Endpunktkonfiguration, die einen worker referenziert, der im io-Subsystem definiert ist.

For information about how to configure the endpoint, see Configuring the Endpoint in the JBoss EAP Configuration Guide.

4.13. Änderungen der WebSocket-Serverkonfiguration

Um WebSockets in JBoss EAP 6 zu verwenden, mussten Sie das nicht blockierende Java NIO2 Connector-Protokoll für den http-Connector im web-Subsystem der JBoss EAP Serverkonfigurationsdatei aktivieren mithilfe eines Befehls ähnlich dem folgenden.

/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)

Um WebSockets in einer Applikation zu verwenden, mussten Sie zudem ein <enable-websockets>-Element in der WEB-INF/jboss-web.xml-Datei der Applikation erstellen und dieses auf true setzen.

In JBoss EAP 7 müssen Sie den Server nicht mehr für die standardmäßige WebSocket-Unterstützung konfigurieren oder die Applikation zu deren Verwendung einstellen. WebSockets sind eine Voraussetzung der Java EE 7 Spezifikation und die erforderlichen Protokolle werden standardmäßig konfiguriert. Komplexere WebSocket-Konfigurationen erfolgen im servlet-container des undertow-Subsystems in der JBoss EAP Serverkonfigurationsdatei. Mithilfe des folgenden Befehls können Sie die verfügbaren Einstellungen anzeigen.

/subsystem=undertow/servlet-container=default/setting=websockets:read-resource(recursive=true)
{
   "outcome" => "success",
   "result" => {
       "buffer-pool" => "default",
       "dispatch-to-worker" => true,
       "worker" => "default"
   }
}

Codebeispiele für WebSockets finden Sie auch in den Quickstarts, die in JBoss EAP integriert sind.

4.14. Änderungen des Single Sign-on Servers

The infinispan subsystem still provides distributed caching support for HA services in the form of Infinispan caches in JBoss EAP 7; however the caching and distribution of authentication information is handled differently than in previous releases.

Wenn in JBoss EAP 6 dem Single Sign-On (SSO) kein Infinispan-Cache zur Verfügung gestellt wurde, dann wurde der Cache nicht verteilt.

In JBoss EAP 7 ist SSO automatisch verteilt, wenn Sie das HA-Profil wählen. Wenn Sie das HA-Profil ausführen, hat jeder Host seinen eigenen Infinispan-Cache, der auf dem Standard-Cache des Web-Cache-Containers basiert. Dieser Cache speichert die relevanten Sitzungs- und SSO-Cookie-Daten für den Host. JBoss EAP handhabt die Übertragung der jeweiligen Cache-Daten auf alle Hosts. In JBoss EAP 7 gibt es keine Möglichkeit, einen Infinispan-Cache speziell zu SSO zuzuweisen.

In JBoss EAP 7 wird SSO im undertow-Subsystem der Serverkonfigurationsdatei konfiguriert.

Bei der Migration zu JBoss EAP 7 sind für SSO keine Änderungen am Applikationscode erforderlich.

4.15. Änderungen der DataSource-Konfiguration

4.15.1. JBDC-Datasource-Treibername

Bei der Konfiguration einer Datasource in der vorherigen Release von JBoss EAP hing der Wert für den Treibernamen von der Anzahl der Klassen in der Datei META-INF/services/java.sql.Driver ab, die im JDBC-Treiber-JAR enthalten war.

Treiber mit einer einzelnen Klasse

Falls die Datei META-INF/services/java.sql.Driver nur eine einzige Klasse spezifizierte, dann war der Wert für den Treibernamen einfach der Name des JDBC-Treiber-JARs. Dies hat sich in JBoss EAP 7 nicht geändert.

Treiber mit mehreren Klassen

Falls in JBoss EAP 6 mehr als eine Klasse in der Datei META-INF/services/java.sql.Driver aufgeführt war, dann gaben Sie an, bei welcher Klasse es sich um die Treiberklasse handelte, indem Sie deren Namen sowie die Haupt- und Nebenversion im folgenden Format an den JAR-Namen anfügten:

JAR_NAME + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION

In JBoss EAP 7 wurde dies geändert. Sie geben den Treibernamen nun im folgenden Format an:

JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
Anmerkung

Ein Unterstrich wurde zwischen JAR_NAME und DRIVER_CLASS_NAME hinzugefügt.

Der MySQL 5.1.31 JDBC-Treiber ist ein Beispiel für einen Treiber, der zwei Klassen enthält. Der Name der Treiberklasse lautet com.mysql.jdbc.Driver. Die folgenden Beispiele veranschaulichen die Unterschiede in der Art und Weise, wie Sie den Treibernamen in der vorherigen Release von JBoss EAP im Vergleich zur aktuellen Release angeben.

Beispiel für JBoss EAP 6 Treibername

mysql-connector-java-5.1.31-bin.jarcom.mysql.jdbc.Driver_5_1

Beispiel für JBoss EAP 7 Treibername

mysql-connector-java-5.1.31-bin.jar_com.mysql.jdbc.Driver_5_1

4.16. Sicherheitsrelevante Server-Konfigurationsänderungen

For information about Java Security Manager server configuration changes, see Considerations Moving from Previous Versions in How To Configure Server Security for JBoss EAP.

4.17. Änderungen am Transaktionssubsystem

Einige der Konfigurationsparameter für den Transaktionsmanager, die im transactions-Subsystem in JBoss EAP 6 verfügbar waren, haben sich in JBoss EAP 7 geändert.

Removed Transactions Subsystem Attributes

Die folgende Tabelle führt die JBoss EAP 6 Parameter auf, die aus dem transactions-Subsystem in JBoss EAP 7 entfernt wurden, sowie deren jeweilige Ersatzparameter.

Parameter in JBoss EAP 6Ersatz in JBoss EAP 7

path

object-store-path

relative-to

object-store-relative-to

Veraltete Parameter des Transaktionssubsystems

The following attributes that were available in the transactions subsystem in JBoss EAP 6 are deprecated in JBoss EAP 7. The deprecated attributes might be removed in a future release of the product. The following table lists the equivalent replacement attributes.

Parameter in JBoss EAP 6Ersatz in JBoss EAP 7

use-hornetq-store

use-journal-store

hornetq-store-enable-async-io-to

journal-store-enable-async-io

enable-statistics

statistics-enabled

4.18. Änderungen der mod_cluster Konfiguration

Die Konfiguration für statische Proxy-Listen in mod_cluster hat sich in JBoss EAP 7 geändert.

In JBoss EAP 6 haben Sie den proxy-list-Parameter konfiguriert, bei dem es sich um eine kommagetrennte Liste der httpd-Proxy-Adressen handelte, die im Format hostname:port angegeben wurden.

Der proxy-list-Parameter ist in JBoss EAP 7 veraltet. Er wurde ersetzt durch den proxies-Parameter, bei dem es sich um eine Liste von ausgehenden Socket-Binding-Namen handelt.

This change impacts how you define a static proxy list, for example, when disabling advertising for mod_cluster. For information about how to disable advertising for mod_cluster, see Disable Advertising for mod_cluster in the JBoss EAP Configuration Guide.

For more information about mod_cluster attributes, see ModCluster Subsystem Attributes in the JBoss EAP Configuration Guide.