Red Hat Training

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

Migrationshandbuch

Red Hat JBoss Enterprise Application Platform 7.0

For Use with Red Hat JBoss Enterprise Application Platform 7.0

Red Hat Customer Content Services

Zusammenfassung

In diesem Handbuch finden Sie Informationen zur Migration von früheren Versionen der Red Hat JBoss Enterprise Application Platform.

Kapitel 1. Einführung

1.1. Über die Red Hat JBoss Enterprise Application Platform 7

Die Red Hat JBoss Enterprise Application Platform 7 (JBoss EAP) ist eine Middleware-Plattform, die auf offenen Standards basiert und mit der Java Enterprise Edition 7 Spezifikation konform geht. Sie integriert den WildFly Application Server 10 mit Messaging, Hochverfügbarkeits-Clustering und anderen Technologien.

Die JBoss EAP hat eine modulare Struktur, die es ermöglicht, Dienste erst bei Bedarf zu aktivieren und so den Systemstart zu beschleunigen.

Die Management-Konsole und das Management Command-Line Interface (CLI) machen das Bearbeiten von XML-Konfigurationsdateien überflüssig und ermöglichen die Verwendung von Skripten und die Automatisierung von Aufgaben.

Die JBoss EAP bietet zwei Betriebsmodi für JBoss EAP Instanzen: den Betrieb als Standalone-Server oder als Managed Domain. Der Betriebsmodus Standalone-Server steht für die Ausführung der JBoss EAP als einzelne Serverinstanz. Der Betriebsmodus Managed Domain ermöglicht die Verwaltung mehrerer JBoss EAP Instanzen von einem einzigen Kontrollpunkt aus.

Des Weiteren beinhaltet die JBoss EAP APIs und Entwicklungs-Frameworks zur schnellen Entwicklung sicherer und skalierbarer Java EE Anwendungen.

1.2. Über das Migrationshandbuch

The purpose of this guide is to document the changes that are required to successfully run and deploy Red Hat JBoss Enterprise Application Platform 6 applications on Red Hat JBoss Enterprise Application Platform 7. It provides information about the new features available in this release, the deprecated and unsupported features, and any application and server configuration updates that might be required to prevent changes in application behavior.

Zudem bietet es Informationen über Tools, die bei der Migration helfen können, wie z.B. Windup, was die Migration von Java-Applikationen vereinfacht, oder das JBoss Server Migration Tool, welches die Serverkonfiguration aktualisiert.

Sobald die Applikation erfolgreich bereitgestellt wurde und läuft, können Sie mit der Planung der Upgrades einzelner Komponenten beginnen, um die neuen Funktionen und Features der JBoss EAP 6 zu nutzen.

Falls Sie beabsichtigen, Ihre JBoss EAP 5 Applikationen direkt zu JBoss EAP 7 zu migrieren, werfen Sie bitte einen Blick auf Migrieren von älteren JBoss EAP Releases.

1.3. Über Migrationen und Upgrades

Große Upgrades

A major upgrade or migration is required when an application is moved from one major release to another, for example, from JBoss EAP 6 to JBoss EAP 7. This is the type of migration addressed in this guide. If an application follows the Java EE specifications, does not access deprecated APIs, and does not contain proprietary code, it might be possible to run the application in JBoss EAP 7 without any application code changes. However, server configuration has changed in JBoss EAP 7 and any server configuration settings require migration.

Kleinere Updates

JBoss EAP periodically provides point releases, which are minor updates that include bug fixes, security fixes, and new features. The JBoss EAP Patching and Upgrading Guide describes how to upgrade from one point release to another, for example from JBoss EAP 7.0 to JBoss EAP 7.1.

Kumulative Patches

JBoss EAP also periodically provides cumulative patches that contain bug and security fixes. Cumulative patches increment the release by the last digit, for example from 7.0.0 to 7.0.1. Patch installation is covered in detail in the JBoss EAP Patching and Upgrading Guide.

1.4. Zur Verwendung der EAP_HOME in diesem Dokument

In diesem Dokument wird die Variable EAP_HOME verwendet, um den Pfad zur Installation der Red Hat JBoss EAP anzugeben. Ersetzen Sie diese Variable durch den tatsächlichen Pfad zu Ihrer JBoss EAP Installation.

  • Wenn Sie die JBoss EAP mittels ZIP-Installationsmethode installiert haben, ist das Installationsverzeichnis das Verzeichnis jboss-eap-7.0, aus dem Sie das ZIP-Archiv extrahiert haben.
  • Wenn Sie die JBoss EAP mittels RPM-Installationsmethode installiert haben, ist das Installationsverzeichnis /opt/rh/eap7/root/usr/share/wildfly/.
  • Wenn Sie die JBoss EAP mittels Installer installiert haben, so ist ${user.home}/EAP-7.0.0 der Standardpfad für EAP_HOME:

    • Für Red Hat Enterprise Linux, Solaris und HP-UX: /home/USER_NAME/EAP-7.0.0/
    • Für Microsoft Windows: C:\Users\USER_NAME\EAP-7.0.0\
  • Wenn Sie den JBoss Developer Studio Installer benutzt haben, um den JBoss EAP Server zu installieren und zu konfigurieren, so ist EAP_HOME der Standardpfad für ${user.home}/jbdevstudio/runtimes/jboss-eap:

    • Für Red Hat Enterprise Linux: /home/USER_NAME/jbdevstudio/runtimes/jboss-eap/
    • Für Microsoft Windows: C:\Users\USER_NAME\jbdevstudio\runtimes\jboss-eap oder C:\Documents and Settings\USER_NAME\jbdevstudio\runtimes\jboss-eap\
Anmerkung

EAP_HOME ist keine Umgebungsvariable. JBOSS_HOME ist die Umgebungsvariable, die in Skripts verwendet wird.

Kapitel 2. Vorbereitung der Migration

2.1. Vorbereitung im Überblick

In JBoss EAP 7, an effort was made to provide backward compatibility for JBoss EAP 6 applications. However, if your application uses features that were deprecated or functionality that was removed from JBoss EAP 7, you might need to make changes to your application code.

In addition, a number of things have changed in this release that might impact deployment of JBoss EAP 7 applications. It is recommended that you do some research and planning before you attempt to migrate your application.

Wenn Sie sich mit den Änderungen der Funktionen, den Entwicklungsmaterialien und den Tools zur Migration vertraut gemacht haben, können Sie mit der Evaluierung Ihrer Anwendungen und Ihrer Serverkonfiguration beginnen, um bestimmen zu können, welche Änderungen zur Ausführung der JBoss EAP 7 notwendig sind.

2.2. Java EE 7 Features

Java EE 7 enthält viele Verbesserungen, die das Entwickeln und Betreiben funktionsreicher Applikationen in Private und Public Clouds erleichtern. Es beinhaltet neue Features und die neuesten Standards wie HTML5, WebSocket, JSON, Batch und Concurrency Utilities. Aktualisierungen umfassen JPA 2.1, JAX-RS 2.0, Servlet 3.1, Expression Language 3.0, JMS 2.0. JSF 2.2, EJB 3.2, CDI 1.2 und Bean Validation 1.1.

Weitere Information über Java EE 7, einschließlich Tutorials, finden Sie auf der Oracle-Website: Java EE at a Glance

2.3. Was ist neu in JBoss EAP 7?

JBoss EAP 7 enthält einige nennenswerte Aktualisierungen und Verbesserungen im Vergleich zur Vorgängerrelease.

Java EE 7
JBoss EAP 7 ist eine zertifizierte Implementierung von Java EE 7, die sowohl das Web- als auch das Full-Profil abbildet. Es unterstützt zudem die neuesten Versionen von CDI 1.2 und Web Sockets 1.1.
Undertow
Undertow ist der neue schlanke, flexible und leistungsstarke Webserver in JBoss EAP 7, der JBoss Web ersetzt. Er wurde in Java geschrieben und für maximalen Durchsatz und Skalierbarkeit konzipiert. Er unterstützt die neusten Webtechnologien wie z.B. den neuen HTTP/2-Standard.
Apache ActiveMQ Artemis
Apache ActiveMQ Artemis ist der neue, in JBoss EAP 7 integrierte Messaging-Provider. Aufbauend auf einer Codespende von HornetQ, bietet dieses Apache-Unterprojekt herausragende Performance basierend auf einer bewährten, nicht blockierenden Architektur.
IronJacamar 1.2
Die neueste Version von IronJacamar bietet eine stabile und funktionsreiche Unterstützung für JCA und DataSources.
JBossWS 5
The fifth generation of JBossWS is a major leap forward, bringing new features and performance improvements to JBoss EAP 7 web services.
RESTEasy 3
JBoss EAP 7 enthält die neueste Generation von RESTEasy. Es geht über die standardmäßigen Java EE REST APIs (JAX-RS 2.0) hinaus, indem es eine Reihe von hilfreichen Erweiterungen wie z.B. JSON Web Encryption, Jackson, YAML, JSON-P und Jettison bereitstellt.
OpenJDK ORB
JBoss EAP 7 ersetzte die JacORB IIOP Implementierung durch einen Downstream-Zweig der OpenJDK ORB, was zu einer besseren Interoperabilität mit dem JVM ORB und der Java EE RI führt.
Funktionsreiches Clustering
Die Clustering-Unterstützung wurde in JBoss EAP 7 grundlegend überarbeitet und enthält mehrere öffentliche APIs für den Zugriff durch Applikationen.
Port-Reduktion
Aufgrund eines HTTP-Upgrades konnte JBoss EAP 7 fast alle seiner Protokolle mittels Multiplexing in nur zwei HTTP-Ports zusammenfassen: einen Management-Port (9990) und einen Applikations-Port (8080).
Erweiterte Protokollierung
Die Management-API unterstützt nun das Anzeigen und Einsehen der verfügbaren Protokolldateien auf einem Server sowie das Definieren angepasster Formatierungen. Die Einrichtung der Protokollierung im Deployment wurde ebenfalls weit verbessert.

For a complete list of new features, see New Features and Enhancements in the JBoss EAP 7 Release Notes.

2.4. Liste veralteter und nicht unterstützter Features

Before you migrate your application, be aware that some features that were available in previous releases of JBoss EAP might be deprecated or no longer supported.

Der Support wurde aufgrund hoher Wartungskosten, geringem Interesse der Community und besseren Alternativlösungen für manche Technologien entfernt. Die folgenden Funktionen werden in JBoss EAP 7 nicht unterstützt.

EJB Entity Beans
EJB Entity Beans werden nicht mehr unterstützt. Falls Ihre Applikation EJB Entity Beans verwendet, sollten Sie den Code auf JPA umstellen, die eine sehr viel performantere und flexiblere API bietet.
JAX-RPC
Da JAX-WS eine sehr viel exaktere und umfassendere Lösung bietet, sollte Code, der für JAX-RPC geschrieben wurde, auf die Verwendung von JAX-WS umgestellt werden.
JSR-88
Die Java EE Application Deployment API Spezifikation (JSR-88) definierte einen Vertrag, der es Tools verschiedener Anbieter ermöglichen sollte, Applikationen auf jeder beliebigen Java EE Plattform zu konfigurieren und bereitzustellen. Diese Spezifikation fand jedoch keine breite Anwendung. Sie müssen eine andere von JBoss EAP unterstützte Option zur Anwendungsbereitstellung verwenden wie z.B. die Management-Konsole, das Management-CLI, Deployment Scanner oder Maven.
Generischer JMS-Ressourcenadapter
Die Fähigkeit zur Konfiguration eines generischen JMS-Ressourcenadapters zur Verbindung mit einem JMS-Provider wird in JBoss EAP 7 nicht mehr unterstützt.

For a comprehensive list of deprecated and unsupported features, see Unsupported and Deprecated Functionality in the JBoss EAP 7 Release Notes.

2.5. Informationen im JBoss EAP Getting Started Guide

Be sure to review the JBoss EAP Getting Started Guide. It contains the following important information:

  • Download und Installation von JBoss EAP 7
  • Download und Installation von Red Hat JBoss Developer Studio
  • Konfiguration von Maven für Ihre Entwicklungsumgebung, Verwalten von Projektabhängigkeiten und Konfigurieren Ihrer Projekte zur Verwendung der JBoss EAP Bill of Material (BOM) Artefakte
  • Download und Betrieb des im Produkt enthaltenen Quickstart-Beispiels

2.6. Migrationsanalyse und Planung

Each application and server configuration is unique and you must thoroughly understand the components and architecture of the existing application and server platform before you attempt the migration. Your migration plan should include a detailed roadmap for testing and roll out to production that takes into account the following information.

Identifizieren der Verantwortlichen für die Migration
Identifizieren Sie die Interessengruppen, Projektmanager, Entwickler, Administratoren und andere Personen oder Personenkreise, die für die Migration verantwortlich sind.
Überprüfen der Applikationsserverplattform-Konfiguration und -Hardware

Untersuchen Sie die Konfiguration der vorhandenen Applikationsserverplattform, um zu beurteilen, wie sich die veränderten Features in JBoss EAP 7 auswirken. Diese Prüfung sollte die folgenden Aspekte berücksichtigen.

  • Betriebssysteme und Versionen
  • Von den Applikationen verwendete Datenbanken
  • Webserver
  • Sicherheitsarchitektur
  • Anzahl und Art der Prozessoren
  • Menge an Arbeitsspeicher
  • Menge an Festplattenspeicher
  • Migration von Datenbank- oder Messaging-Daten
  • Other components that might be impacted by the migration
Überprüfen der derzeitigen Produktionsumgebung

Sie sollten planen, die Produktionsumgebung so genau wie möglich nachzubilden, um den Migrationsprozess zu testen.

  • Take into account any clustering configurations. See Upgrading a Cluster in the JBoss EAP Patching and Upgrading Guide for more information about how to migrate clusters.
  • Falls Sie derzeit eine umfangreiche verwaltete Domain betreiben, sollten Sie eine schrittweise Migration in Betracht ziehen.
  • Klären Sie, ob Sie Datenbank- oder Messaging-Daten migrieren müssen.
Untersuchen und Verstehen der vorhandenen Applikation

Untersuchen Sie die vorhandene JBoss EAP 6 Applikation gründlich. Machen Sie sich bis ins Detail vertraut mit deren Architektur, Funktionen und Komponenten, einschließlich:

  • JVM-Version
  • Integration mit anderen Red Hat Applikationsserver-Middleware-Komponenten
  • Integration mit proprietärer Software von Drittanbietern
  • Nutzung von nicht weitergeführten Funktionen, die anderweitig ersetzt werden müssen
  • Applikationskonfiguration einschließlich Deployment-Deskriptoren, JNDI, Persistenz, JDBC-Konfiguration und Pooling, JMS-Topics und -Queues sowie Protokollierung

Identifizieren Sie jeglichen inkompatiblen Code oder Konfigurationen, an denen während der Migration zu JBoss EAP 7 Änderungen vorgenommen werden müssen.

Erstellen eines detaillierten Testplans
  • Der Plan sollte Anforderungen für Regressionstests und Annahmekriterien enthalten.
  • Er sollte zudem einen Performancetest enthalten.
  • Richten Sie eine Testumgebung ein, die möglichst genau die Produktionsumgebung nachbildet, um die Migration zu testen, bevor diese in der Produktionsumgebung durchgeführt wird.
  • Entwerfen Sie unbedingt auch einen Plan für Backup und Backout, also für eine Rückkehr zum Status Quo im Falle einer gescheiterten Migration.
Überprüfen der verfügbaren Ressourcen für den Migrationsvorgang
  • Bewerten Sie die Fähigkeiten des Entwicklungsteams und planen Sie gegebenenfalls zusätzliche Fortbildungen oder externe Berater ein.
  • Beachten Sie, dass für das Testen während des Migrationsvorgangs zusätzliche Hardware und andere Ressourcen nötig sind, bis die gesamte Maßnahme abgeschlossen ist.
  • Entscheiden Sie, ob Schulungen nötig sind und fügen Sie diese gegebenenfalls im Zeitplan ein.
Ausführen des Plans
Vereinen Sie die erforderlichen Ressourcen und implementieren Sie den Migrationsplan.
Wichtig

Ehe Sie jegliche Änderungen an Ihrer Applikation vornehmen, sollten Sie unbedingt ein Backup erstellen.

2.7. Sichern wichtiger Daten und Prüfen des Serverstatus

Bevor Sie Ihre Applikation migrieren, sollten Sie sich der folgenden Risiken bewusst sein.

  • The migration might remove temporary folders. Any deployments stored in the data/content/ directory must be backed up prior to the migration and restored after it completes. Otherwise, the server will fail to start due to the missing content.
  • Schließen Sie vor Beginn der Migration alle noch offenen Transaktionen ab und löschen Sie das Transaktionsverzeichnis data/tx-object-store/.
  • Die persistenten Timerdaten in data/timer-service-data müssen auf deren Kompatibilität hin überprüft werden. Untersuchen Sie die deployment-* Dateien in diesem Verzeichnis, um herauszufinden, welche Timer noch in Gebrauch sind.

Vergewissern Sie sich, dass auch die aktuelle Serverkonfiguration und Applikationen vor Beginn der Migration gesichert wurden.

2.8. Migrieren einer RPM-Installation

Wichtig

Es wird nicht unterstützt, mehr als eine RPM-installierte Instanz von JBoss EAP auf einem einzigen Red Hat Enterprise Linux Server auszuführen. Aufgrund dessen empfehlen wir, dass Sie Ihre JBoss EAP Installation auf einen neuen Rechner migrieren, wenn Sie zu JBoss EAP 7 migrieren.

Stellen Sie bei der Migration einer JBoss EAP RPM-Installation von JBoss EAP 6 zu JBoss EAP 7 sicher, dass JBoss EAP 7 auf einem Rechner installiert ist, der keine vorhandene JBoss EAP RPM-Installation hat.

To install JBoss EAP 7 using RPMs, see the JBoss EAP Installation Guide.

The migration advice in this guide also applies to migrating RPM installations of JBoss EAP, but you might need to alter some steps (such as how to start JBoss EAP) to suit an RPM installation compared to a ZIP or installer installation.

2.9. Migrieren von JBoss EAP als Dienst

If you run JBoss EAP 6 as a service, be sure to review Configuring JBoss EAP to Run as a Service in the JBoss EAP Installation Guide for updated configuration instructions for JBoss EAP 7.

Kapitel 3. Tools für die Migration

3.1. Verwenden von Windup zur Analyse von Applikationen zur Migration

Windup (im Red Hat JBoss Migration Toolkit enthalten) ist ein erweiterbares und konfigurierbares regelbasiertes Tool, das die Migration von Java-Applikationen vereinfacht. Es analysiert die APIs, Technologien und Architekturen, die von den zu migrierenden Applikationen verwendet werden, und liefert detaillierte Migrationsberichte für jede Applikation. Diese Berichte liefern die folgenden Informationen.

  • Detaillierte Erklärung der nötigen Migrationsänderungen
  • Ob die ausgewiesene Änderung optional oder zwingend erforderlich ist
  • Ob die ausgewiesene Änderung komplex oder einfach ist
  • Links zum Code, der die Migrationsänderung erfordert
  • Tipps und Links zu Informationen über die Durchführung der nötigen Änderungen
  • Eine Schätzung des Aufwands für jedes gefundene Migrationsproblem und der Gesamtaufwand zur Migration der Applikation

Sie können Windup zur Analyse des Codes und der Architektur Ihrer JBoss EAP 6 Applikationen verwenden, bevor Sie diese zu JBoss EAP 7 migrieren. Das Windup-Regelset zur Migration von JBoss EAP 6 zu JBoss EAP 7 untersucht XML-Deskriptoren sowie speziellen Applikationscode und Parameter, die durch eine alternative Konfiguration ersetzt werden müssen, wenn zu JBoss EAP 7 migriert wird.

Weitere Informationen über die Verwendung von Windup zur Analyse Ihrer JBoss EAP 6 Applikationen finden Sie im Windup User Guide.

3.2. Verwenden des JBoss Server Migration Tools zur Migration von Serverkonfigurationen

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.

Das JBoss Server Migration Tool liest Ihre vorhandene JBoss EAP 6 Serverkonfigurationsdatei und fügt Konfigurationen für die neuen Subsysteme hinzu, aktualisiert vorhandene Subsystemkonfigurationen mit neuen Features und entfernt hinfällige Subsystemkonfigurationen.

Die aktuelle Vorab-Release der Binärdistribution des JBoss Server Migration Tools steht zum Download zur Verfügung unter https://github.com/wildfly/wildfly-server-migration/releases. Diese Version unterstützt die Migration von eigenständigen Servern von JBoss EAP 6.4 zu JBoss EAP 7.0. Allgemeine Informationen über die Nutzung des Tools finden Sie im JBoss Server Migration Tool User Guide.

Anmerkung

Die Vorab-Releaseversion des JBoss Server Migration Tools wird noch nicht unterstützt.

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.

Kapitel 5. Änderungen bei Applikationsmigration

5.1. Änderungen der Webservices-Applikation

JBossWS 5 bringt neue Funktionalitäten und Performance-Verbesserungen in JBoss EAP 7 Webservices ein, hauptsächlich aufgrund von Upgrades der Komponenten Apache CXF, Apache WSS4J und Apache Santuario.

5.1.1. Änderungen der JAX-RPC-Unterstützung

Die Java-API für XML-basierte RPC (JAX-RPC) gilt seit Java EE 6 als veraltet und ist in Java EE 7 optional. In JBoss EAP 7 ist sie nicht mehr verfügbar und wird nicht mehr unterstützt. Applikationen, die JAX-RPC verwenden, müssen zu JAX-WS migriert werden, dem aktuellen Java EE Standard Webservices-Framework.

Auf die Verwendung von JAX-RPC Webservices kann eine der folgenden Tatsachen hinweisen:

  • Das Vorhandensein einer JAX-RPC Mapping-Datei – eine XML-Datei mit dem Root-Element <java-wsdl-mapping>.
  • Das Vorhandensein einer webservices.xml XML-Deskriptordatei, die ein <webservice-description>-Element enthält, das ein <jaxrpc-mapping-file>-Unterelement enthält. Nachfolgend sehen Sie ein Beispiel für eine webservices.xml-Deskriptordatei, die einen JAX-RPC Webservice definiert.

    <webservices xmlns="http://java.sun.com/xml/ns/j2ee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd" version="1.1">
      <webservice-description>
        <webservice-description-name>HelloService</webservice-description-name>
        <wsdl-file>WEB-INF/wsdl/HelloService.wsdl</wsdl-file>
        <jaxrpc-mapping-file>WEB-INF/mapping.xml</jaxrpc-mapping-file>
        <port-component>
          <port-component-name>Hello</port-component-name>
          <wsdl-port>HelloPort</wsdl-port>
          <service-endpoint-interface>org.jboss.chap12.hello.Hello</service-endpoint-interface>
          <service-impl-bean>
            <servlet-link>HelloWorldServlet</servlet-link>
          </service-impl-bean>
        </port-component>
      </webservice-description>
    </webservices>
  • Das Vorhandensein einer ejb-jar.xml-Datei, die ein <service-ref> enthält, das eine JAX-RPC Mapping-Datei referenziert.

5.1.2. Änderungen der Apache CXF Spring Webservices

In früheren Releases von JBoss EAP konnten Sie die Integration von JBossWS und Apache CXF anpassen, indem Sie eine jbossws-cxf.xml-Konfigurationsdatei im Endpunkt-Deployment-Archiv implementierten. Ein Anwendungsfall hierfür war die Konfiguration von Interzeptor-Ketten für Webservice-Client- und -Server-Endpunkte auf dem Apache CXF-Bus. Diese Integration erfordert, dass Spring auf dem JBoss EAP Server deployt ist.

Die Spring-Integration wird in JBoss EAP 7 nicht länger unterstützt. Jegliche Applikationen, die eine jbossws-cxf.xml-Deskriptor-Konfigurationsdatei enthalten, müssen bearbeitet werden, um die angepasste Konfiguration in dieser Datei zu ersetzen. Zwar ist es weiterhin möglich, direkt auf die Apache CXF-API zuzugreifen, seien Sie sich jedoch bewusst, dass die Applikation nicht portierbar sein wird.

Wir empfehlen, wo möglich die angepassten Spring-Konfigurationen durch die neuen JBossWS Deskriptor-Konfigurationsoptionen zu ersetzen. Die JBossWS Deskriptor-basierte Herangehensweise bietet eine ähnliche Funktionalität, ohne Änderungen am Client-Endpunkt-Code zu erfordern. In einigen Fällen können Sie Spring durch Context Dependency Injection (CDI) ersetzen.

Apache CXF-Interzeptoren

Der JBossWS-Deskriptor bietet neue Konfigurationsoptionen, die es Ihnen ermöglichen, die Interzeptoren zu deklarieren, ohne den Client-Endpunkt-Code zu ändern. Stattdessen deklarieren Sie Interzeptoren innerhalb der vordefinierten Client- und Endpunkt-Konfigurationen, indem Sie eine Liste von Interzeptor-Klassennamen für die Eigenschaften cxf.interceptors.in und cxf.interceptors.out angeben.

Nachfolgend sehen Sie ein Beispiel für eine jaxws-endpoint-config.xml-Datei, die Interzeptoren mithilfe dieser Eigenschaften deklariert.

<?xml version="1.0" encoding="UTF-8"?>
<jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd">
  <endpoint-config>
    <config-name>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointImpl</config-name>
    <property>
      <property-name>cxf.interceptors.in</property-name>
      <property-value>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointInterceptor,org.jboss.test.ws.jaxws.cxf.interceptors.FooInterceptor</property-value>
    </property>
    <property>
      <property-name>cxf.interceptors.out</property-name>
      <property-value>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointCounterInterceptor</property-value>
    </property>
  </endpoint-config>
</jaxws-config>
Apache CXF-Features

Der JBossWS-Deskriptor ermöglicht es Ihnen, Features innerhalb von vordefinierten Client- und Endpunktkonfigurationen zu deklarieren, indem Sie eine Liste von Feature-Klassennamen für die cxf.features-Eigenschaft angeben.

Nachfolgend sehen Sie ein Beispiel für eine jaxws-endpoint-config.xml-Datei, die ein Feature mithilfe dieser Eigenschaft deklariert.

<?xml version="1.0" encoding="UTF-8"?>
<jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd">
  <endpoint-config>
    <config-name>Custom FI Config</config-name>
    <property>
      <property-name>cxf.features</property-name>
      <property-value>org.apache.cxf.feature.FastInfosetFeature</property-value>
    </property>
  </endpoint-config>
</jaxws-config>
Apache CXF HTTP-Transport

In Apache CXF wird die HTTP-Transportkonfiguration erreicht, indem die org.apache.cxf.transport.http.HTTPConduit-Optionen angegeben werden. Die JBossWS-Integration ermöglicht die befehlsgesteuerte Änderung von Conduits unter Verwendung der Apache CXF-API wie folgt.

import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;

// Set chunking threshold before using a JAX-WS port client
...
HTTPConduit conduit = (HTTPConduit)ClientProxy.getClient(port).getConduit();
HTTPClientPolicy client = conduit.getClient();

client.setChunkingThreshold(8192);
...

Sie können die Apache CXF HTTPConduit-Standardwerte auch steuern und außer Kraft setzen, indem Sie Systemeigenschaften einstellen.

EigenschaftTypBeschreibung

cxf.client.allowChunking

Boolesche Variable

Legt fest, ob die Anfragen unter Verwendung von Chunking gesendet werden sollen.

cxf.client.chunkingThreshold

Integer

Legt den Grenzwert fest, an dem von Nicht-Chunking- auf Chunking-Modus gewechselt werden soll.

cxf.client.connectionTimeout

Long

Legt die Anzahl der Millisekunden für die Zeitüberschreitung der Verbindung fest.

cxf.client.receiveTimeout

Long

Legt die Anzahl der Millisekunden für die Zeitüberschreitung beim Empfang fest.

cxf.client.connection

Zeichenkette

Legt fest, ob der Verbindungstyp Keep-Alive oder close genutzt werden soll.

cxf.tls-client.disableCNCheck

Boolesche Variable

Legt fest, ob die CN-Hostnamen-Prüfung deaktiviert werden soll.

5.1.3. Änderungen der WS-Security

  • Falls Ihre Applikation einen angepassten Callback Handler enthält, der auf die Klasse org.apache.ws.security.WSPasswordCallback zugreift, dann beachten Sie, dass diese Klasse in das Paket org.apache.wss4j.common.ext verlegt wurde.
  • Die meisten der SAML-Bean-Objekte vom Paket org.apache.ws.security.saml.ext wurden in das Paket org.apache.wss4j.common.saml package verlegt.
  • Verwenden Sie den RSA v1.5 Schlüsseltransport und alle zugehörigen Algorithmen sind standardmäßig untersagt.
  • Der Security Token Service (STS) validierte bisher lediglich onBehalfOf-Tokens. Er validiert nun auch ActAs-Tokens. Infolgedessen müssen gültige Werte für Benutzername und Passwort im UsernameToken angegeben werden, das für das ActAs-Token bereitgestellt wird.
  • SAML Bearer Tokens müssen nun über eine interne Signatur verfügen. Die Klasse org.apache.wss4j.dom.validate.SamlAssertionValidator besitzt nun eine setRequireBearerSignature()-Methode, um die Signaturprüfung zu aktivieren bzw. zu deaktivieren.

5.1.4. Änderungen der JBoss-Modulstruktur

Die JARs cxf-api und cxf-rt-core wurden in ein JAR namens cxf-core zusammengelegt. Infolgedessen enthält das org.apache.cxf-Modul in JBoss EAP nun das cxf-core-JAR und bietet mehr Klassen als in der vorherigen Release.

5.1.5. Änderungen und Voraussetzungen von BouncyCastle

Falls Sie AES-Verschlüsselung mit Galois/Counter-Modus (GCM) für symmetrische Verschlüsselung in XML/WS-Security verwenden möchten, müssen Sie den BouncyCastle-Sicherheitsprovider nutzen.

JBoss EAP 7 enthält das org.bouncycastle-Modul, und JBossWS ist nun dazu in der Lage, mithilfe seines Klassenladers den BouncyCastle-Sicherheitsprovider zu erhalten und zu verwenden. Es ist daher nicht mehr nötig, BouncyCastle statisch in der aktuellen JVM zu installieren. Für Applikationen, die außerhalb des Containers laufen, kann der Sicherheitsprovider für JBossWS verfügbar gemacht werden, indem eine BouncyCastle-Bibliothek zum Klassenpfad hinzugefügt wird.

Sie können dieses Verhalten deaktivieren, indem Sie den Eigenschaftswert org.jboss.ws.cxf.noLocalBC auf true setzen in der Deployment-Deskriptordatei jaxws-endpoint-config.xml für den Server oder in der Deskriptordatei jaxws-client-config.xml für Clients.

Falls Sie eine andere Version als die in JBoss EAP enthaltene Version verwenden möchten, können Sie nach wie vor BouncyCastle statisch in der JVM installieren. In diesem Fall wird der statisch installierte BouncyCastle-Sicherheitsprovider gewählt anstelle des Providers im Klassenpfad. Um Probleme zu vermeiden, müssen Sie BouncyCastle 1.49, 1.51 oder höher verwenden.

5.1.6. Apache CXF-Bus Auswahlstrategie

Die standardmäßige Strategie zur Bus-Auswahl für Clients, die im Container ausgeführt werden, hat sich geändert von THREAD_BUS zu TCCL_BUS. Für Clients, die außerhalb des Containers ausgeführt werden, ist die Standardstrategie noch immer THREAD_BUS. Sie können zum Verhalten der vorherigen Release zurückkehren, indem Sie eine der beiden folgenden Maßnahmen durchführen.

  • Booten Sie den JBoss EAP Server mit dem Wert THREAD_BUS für die Systemeigenschaft org.jboss.ws.cxf.jaxws-client.bus.strategy.
  • Legen Sie die Auswahlstrategie ausdrücklich im Clientcode fest.

5.1.7. JAX-WS 2.2 Anforderungen für WebServiceRef

Container müssen Konstruktoren im JAX-WS 2.2 Stil nutzen, unter Verwendung der WebServiceFeature-Klasse, um Clients zu erstellen, die in Webservice-Referenzen injiziert werden. Das bedeutet, dass vom Benutzer angegebene Serviceklassen, die vom Container injiziert wurden, JAX-WS 2.2 oder höher implementieren müssen.

5.1.8. Änderungen der IgnoreHttpsHost CN-Überprüfung

In früheren Releases konnten Sie deaktivieren, dass der HTTPS URL-Hostname anhand des Common Name (CN) eines Services, der in dessen Zertifikat angegeben ist, überprüft wird. Sie erreichten dies durch Einstellen der Systemeigenschaft org.jboss.security.ignoreHttpsHost auf true. Diese Systemeigenschaft wurde ersetzt durch cxf.tls-client.disableCNCheck.

5.1.9. Serverseitige Konfiguration und Klassenladen

As a consequence of enabling injections into service endpoint and service client handlers, it is no longer possible to automatically load handler classes from the org.jboss.as.webservices.server.integration JBoss module. If your application depends on a given predefined configuration, you might need to explicitly define new module dependencies for your deployment. For more information, see Migrate Explicit Module Dependencies

5.1.10. Auslaufen des »Java Endorsed Standards Override Mechanism«

Der Java Endorsed Standards Override Mechanism gilt seit JDK 1.8_40 als veraltet und wird in JDK 9 planmäßig entfernt. Dieser Mechanismus erlaubte es Entwicklern, Bibliotheken für alle deployten Applikationen verfügbar zu machen, indem JARs in ein entsprechendes Verzeichnis innerhalb der JRE platziert wurden.

Falls Ihre Applikation die JBossWS-Implementierung von Apache CXF verwendet, gewährleistet JBoss EAP 7, dass die erforderlichen Abhängigkeiten in der richtigen Reihenfolge hinzugefügt werden, weshalb diese Änderung keine Auswirkungen auf Sie haben sollte. Falls Ihre Applikation direkt auf Apache CXF zugreift, müssen Sie nun die Apache CXF Abhängigkeiten nach den JBossWS-Abhängigkeiten hinzufügen im Rahmen Ihres Applikations-Deployments.

5.1.11. Spezifikation von Deskriptor in EAR-Archiv

In früheren Releases von JBoss EAP konnten Sie die Deployment-Deskriptordatei jboss-webservices.xml für EJB-Webservice-Deployments im Verzeichnis META-INF/ von JAR-Archiven oder im Verzeichnis WEB-INF/ für POJO-Webservice-Deployments und EJB-Webservice-Endpunkte gebündelt in WAR-Archiven konfigurieren.

In JBoss EAP 7 können Sie nun die Deployment-Deskriptordatei jboss-webservices.xml im Verzeichnis META-INF/ eines EAR-Archivs konfigurieren. Falls eine jboss-webservices.xml-Datei sowohl im EAR-Archiv als auch im JAR- oder WAR-Archiv gefunden wird, dann setzen die Konfigurationsdaten in der jboss-webservices.xml-Datei aus dem JAR oder WAR die entsprechenden Daten aus der EAR-Deskriptordatei außer Kraft.

5.2. Änderungen des Remote-URL-Connectors und -Ports

In JBoss EAP 7 wurde der Standard-Connector geändert von remote auf http-remoting und der standardmäßige Remote-Verbindungsport wurde geändert von 4447 auf 8080. Die JNDI-Provider-URL für die Standardkonfiguration wurde geändert von remote://localhost:4447 auf http-remoting://localhost:8080.

If you use the JBoss EAP 7 migrate operation to update your configuration, you do not need to modify the remote connector, remote port, or JNDI provider URLs because the migration operation preserves the JBoss EAP 6 remoting connector and 4447 port configuration settings in the subsystem configuration. For more information about the migrate operation, see Management CLI Migration Operation.

Falls Sie die migrate-Operation nicht verwenden und stattdessen die neue JBoss EAP 7 Standardkonfiguration ausführen, müssen Sie den Remote-Connector, Remote-Port und die JNDI-Provider-URL auf die oben genannten neuen Einstellungen ändern.

5.3. Änderungen der Messaging-Applikation

5.3.1. Ersetzen oder Aktualisieren von JMS-Deployment-Deskriptoren

Die proprietären JMS-Ressourcen-Deployment-Deskriptordateien mit dem Namensformat -jms.xml gelten in JBoss EAP 7 als veraltet. Nachfolgend sehen Sie ein Beispiel für eine JMS-Ressourcen-Deployment-Deskriptordatei in JBoss EAP 6.

<?xml version="1.0" encoding="UTF-8"?>
<messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0">
  <hornetq-server>
    <jms-destinations>
      <jms-queue name="testQueue">
        <entry name="queue/test"/>
        <entry name="java:jboss/exported/jms/queue/test"/>
      </jms-queue>
      <jms-topic name="testTopic">
        <entry name="topic/test"/>
        <entry name="java:jboss/exported/jms/topic/test"/>
      </jms-topic>
    </jms-destinations>
  </hornetq-server>
</messaging-deployment>

Falls Sie in der früheren Release -jms.xml JMS-Deployment-Deskriptoren in Ihrer Applikation verwendet haben, können Sie Ihre Applikation entweder zur Verwendung des standardmäßigen Java EE 7 Deployment-Deskriptors konvertieren (siehe Abschnitt EE.5.18 der Java EE 7 specification) oder Sie können die Deployment-Deskriptoren auf das messaging-activemq-Subsystem in JBoss EAP 7 aktualisieren.

Falls Sie sich dazu entscheiden, den Deskriptor zu aktualisieren, müssen Sie die folgenden Änderungen vornehmen.

  • Ändern Sie den Namespace von »urn:jboss:messaging-deployment:1.0« auf »urn:jboss:messaging-activemq-deployment:1.0«.
  • Ändern Sie den Elementnamen <hornetq-server> auf <server>.

Die aktualisierte Datei sollte etwa wie das folgende Beispiel aussehen.

<?xml version="1.0" encoding="UTF-8"?>
<messaging-deployment xmlns="urn:jboss:messaging-activemq-deployment:1.0">
  <server>
    <jms-destinations>
      <jms-queue name="testQueue">
        <entry name="queue/test"/>
        <entry name="java:jboss/exported/jms/queue/test"/>
      </jms-queue>
      <jms-topic name="testTopic">
        <entry name="topic/test"/>
        <entry name="java:jboss/exported/jms/topic/test"/>
      </jms-topic>
    </jms-destinations>
  </server>
</messaging-deployment>

Weitere Informationen über Änderungen der Serverkonfiguration hinsichtlich Messaging finden Sie unter Änderungen der Messaging-Serverkonfiguration.

5.3.2. Aktualisieren der externen JMS-Clients

JBoss EAP 7 unterstützt weiterhin die JMS 1.1 API, Sie brauchen Ihren Code also nicht zu ändern.

Der standardmäßige Remote-Connector und Port wurde in JBoss EAP 7 geändert. Details über diese Änderung finden Sie unter Änderungen des Remote-URL-Connectors und -Ports.

Falls Sie Ihre Serverkonfiguration mithilfe der migrate-Operation migrieren, werden die alten Einstellungen bewahrt und Sie müssen Ihre PROVIDER_URL nicht aktualisieren. Wenn Sie dagegen die neue JBoss EAP 7 Standardkonfiguration verwenden, müssen Sie die PROVIDER_URL im Client-Code ändern, um die neue Einstellung http-remoting://localhost:8080 zu verwenden. Weitere Informationen finden Sie unter Migrieren von Remote-Naming-Client-Code.

Falls Sie planen, Ihren Code zur JMS 2.0 API zu migrieren, werfen Sie einen Blick auf den helloworld-jms-Quickstart für ein Arbeitsbeispiel.

5.3.3. Ersetzen der HornetQ-API

JBoss EAP 6 enthielt das org.hornetq-Modul, das Ihnen die Verwendung der HornetQ-API in Ihrem Applikationsquellcode ermöglichte.

Apache ActiveMQ Artemis ersetzt HornetQ in JBoss EAP 7, weshalb Sie jeglichen Code, der die HornetQ-API verwendete, zur Apache ActiveMQ Artemis API migrieren müssen. Die Bibliotheken für diese API sind im Modul org.apache.activemq.artemis enthalten.

ActiveMQ Artemis ist eine Weiterentwicklung von HornetQ; viele der Grundlagen gelten weiterhin.

5.4. Änderungen der JAX-RS und RESTEasy-Applikation

Die vorherige Release von JBoss EAP umfasste RESTEasy 2, was eine Implementierung von JAX-RS 1.x war. JBoss EAP 7 enthält RESTEasy 3, was eine Implementierung von JAX-RS 2.0 ist, wie von der Spezifikation JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services definiert. Weitere Informationen über die Java API für RESTful Webservices finden Sie unter JAX-RS 2.0 API Specification.

Die in JBoss EAP enthaltene Version von Jackson hat sich geändert. Die vorherige Version von JBoss EAP enthielt Jackson 1.9.9, JBoss EAP 7 enthält jetzt Jackson 2.6.3 oder höher.

This section describes how these changes might impact applications that use RESTEasy or JAX-RS.

5.4.1. Veraltete Klassen in RESTEasy

Interzeptor- und MessageBody-Klassen

JSR 311: JAX-RS: The Java™ API für RESTful-Webservices enthielt kein Interzeptor-Framework, weshalb RESTEasy 2 eines bereitstellte. JSR 339: JAX-RS 2.0: Die Java-API für RESTful-Webservices führte ein offizielles Interzeptor- und Filter-Framework ein, weshalb das in RESTEasy 2 enthaltene Interzeptor-Framework nun als veraltet gilt und durch die JAX-RS 2.0 konforme Interzeptor-Facility in RESTEasy 3.x. ersetzt wurde. Die relevanten Schnittstellen werden im Paket javax.ws.rs.ext des Moduls jaxrs-api definiert.

Anmerkung

Alle Interzeptoren aus der vorherigen Release von RESTEasy können parallel zum neuen JAX-RS 2.0 Filter und den Interzeptor-Schnittstellen laufen.

For more information about interceptors, see RESTEasy Interceptors in Developing Web Services Applications for JBoss EAP.

Weitere Informationen über die neue Ersatz-API finden Sie unter RESTEasy JAX-RS 3.0.13.Final API oder höher.

Client-API

Das RESTEasy-Client-Framework in resteasy-jaxrs wurde ersetzt durch das JAX-RS 2.0 konforme resteasy-client-Modul. Infolgedessen sind einige RESTEasy-Client-API-Klassen und -Methoden nun veraltet.

Anmerkung

Weitere Informationen über die API-Klassen org.jboss.resteasy.client.jaxrs finden Sie unter RESTEasy JAX-RS JavaDoc.

StringConverter

Die Klasse org.jboss.resteasy.spi.StringConverter gilt in RESTEasy 3.x als veraltet. Diese Funktionalität kann ersetzt werden durch Verwendung der JAX-RS 2.0 Klasse jax.ws.rs.ext.ParamConverterProvider.

5.4.2. Entfernte oder geschützte RESTEasy-Klassen

ResteasyProviderFactory Add-Methoden

Die meisten der add()-Methoden von org.jboss.resteasy.spi.ResteasyProviderFactory wurden in RESTEasy 3.0 entfernt oder geschützt. Beispielsweise wurden die Methoden addBuiltInMessageBodyReader() und addBuiltInMessageBodyWriter() entfernt und die Methoden addMessageBodyReader() und addMessageBodyWriter() geschützt.

Sie sollten nun die Methoden registerProvider() und registerProviderInstance() verwenden.

Weitere von RESTEasy 3 entfernte Klassen

Die Annotation @org.jboss.resteasy.annotations.cache.ServerCached, die angibt, dass die Antwort auf die JAX-RS-Methode auf dem Server gecacht werden soll, wurde aus RESTEasy 3 entfernt und muss aus dem Applikationscode entfernt werden.

5.4.3. Weitere RESTEasy-Änderungen

SignedInput und SignedOuput
  • SignedInput und SignedOutput für resteasy-crypto müssen den Content-Type auf multipart/signed gesetzt haben, entweder im Request- oder im Response-Objekt oder durch Verwendung der Annotation @Consumes oder @Produces.
  • SignedOutput und SignedInput können dazu verwendet werden, um das application/pkcs7-signature MIME-Type-Format in Binärformat zurückzugeben, indem dieser Typ in der Annotation @Produces oder @Consumes festgelegt wird.
  • Falls @Produces oder @Consumes vom MIME-Typ text/plain ist, wird SignedOutput base64-kodiert und als Zeichenkette gesendet.
Sicherheitsfilter

Die Sicherheitsfilter für @RolesAllowed, @PermitAll und @DenyAll geben nun »403 Forbidden« statt »401 Unauthorized« zurück.

Clientseitige Filter

Die neuen JAX-RS 2.0 clientseitigen Filter werden nicht gebunden und ausgeführt, wenn Sie die RESTEasy-Client-API aus der vorherigen Release verwenden.

Asynchrone HTTP-Unterstützung

Because the JAX-RS 2.0 specification adds asynchronous HTTP support using the @Suspended annotation and the AsynResponse interface, the RESTEasy proprietary API for asynchronous HTTP has been deprecated and might be removed as soon as RESTEasy 3.1. The asynchronous Tomcat and asynchronous JBoss Web modules have also been removed from the server installation. If you are not using the Servlet 3.0 container or higher, asynchronous HTTP server-side processing will be simulated and run synchronously in same request thread.

Serverseitiger Cache

Die Einrichtung des serverseitigen Caches hat sich verändert. Siehe RESTEasy-Dokumentation für weitere Informationen.

5.4.4. Änderungen der RESTEasy SPI

SPI-Ausnahmen

Alle SPI-Fehlerausnahmen gelten nun als veraltet und werden intern nicht mehr verwendet. Sie wurden durch entsprechende JAX-RS 2.0 Ausnahmen ersetzt.

Veraltete AusnahmeErsatz-Ausnahme im jaxrs-api-Modul

org.jboss.resteasy.spi.ForbiddenException

javax.ws.rs.ForbiddenException

org.jboss.resteasy.spi.MethodNotAllowedException

javax.ws.rs.NotAllowedException

org.jboss.resteasy.spi.NotAcceptableException

javax.ws.rs.NotAcceptableException

org.jboss.resteasy.spi.NotFoundException

javax.ws.rs.NotFoundException

org.jboss.resteasy.spi.UnauthorizedException

javax.ws.rs.NotAuthorizedException

org.jboss.resteasy.spi.UnsupportedMediaTypeException

javax.ws.rs.NotSupportedException

InjectorFactory und Registry

Die InjectorFactory- und Registry-SPIs haben sich verändert. Dies sollte keinerlei Probleme verursachen, sofern Sie RESTEasy wie dokumentiert und unterstützt einsetzen.

5.4.5. Änderungen des Jackson-Providers

Die in JBoss EAP enthaltene Version von Jackson hat sich geändert. Die vorherige Version von JBoss EAP umfasste Jackson 1.9.9. JBoss EAP 7 enthält nun Jackson 2.6.3 oder höher. Infolgedessen hat sich der Jackson-Provider geändert von resteasy-jackson-provider auf resteasy-jackson2-provider.

Das Upgrade auf resteasy-jackson2-provider erfordert einige Paketänderungen. Beispielsweise hat sich das Jackson-Annotationspaket geändert von org.codehaus.jackson.annotate auf com.fasterxml.jackson.annotation.

To switch your application to use the default provider that was included in the previous release of JBoss EAP, see Switching the Default Jackson Provider in Developing Web Services Applications for JBoss EAP.

5.4.6. Änderungen der Spring RESTEasy-Integration

Das Spring 4.0 Framework führte Unterstützung für Java 8 ein. Falls Sie planen, die RESTEasy 3.x Integration mit Spring zu verwenden, stellen Sie sicher, dass Sie 4.2.x als Mindestversion für Spring in Ihrem Deployment spezifizieren, da dies die früheste stabile Version ist, die von JBoss EAP 7 unterstützt wird.

5.4.7. Änderungen des RESTEasy Jettison JSON-Providers

Der RESTEasy Jettison JSON-Provider gilt in JBoss EAP 7 als veraltet und wird standardmäßig nicht mehr zu Deployments hinzugefügt. Wir raten Ihnen, auf den empfohlenen RESTEasy Jackson-Provider zu wechseln. Falls Sie es vorziehen, weiterhin den Jettison-Provider zu verwenden, müssen Sie eine explizite Abhängigkeit dafür in der Datei jboss-deployment-descriptor.xml definieren, wie im folgenden Beispiel veranschaulicht.

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <exclusions>
      <module name="org.jboss.resteasy.resteasy-jackson2-provider"/>
      <module name="org.jboss.resteasy.resteasy-jackson-provider"/>
    </exclusions>
    <dependencies>
      <module name="org.jboss.resteasy.resteasy-jettison-provider" services="import"/>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

For more information about how to define explicit dependencies, see Add an Explicit Module Dependency to a Deployment in the JBoss EAP Development Guide.

5.5. Änderungen der CDI 1.2 Applikation

JBoss EAP 7 includes support for CDI 1.2. As a result, applications written using CDI 1.0 might see some changes in behavior when migrated to JBoss EAP 7. This section summarizes only a few of those changes.

Weitere Informationen über Weld und CDI 1.2 finden Sie in den folgenden Quellen:

Bean-Archive

Bean-Klassen mit aktivierten Beans müssen in Bean-Archiven deployt sein, um zu gewährleisten, dass sie vom CDI überprüft werden und die Bean-Klassen somit gefunden und verarbeitet werden.

In CDI 1.0 war ein Archiv definiert als ein explizites Bean-Archiv, wenn es eine beans.xml-Datei im Verzeichnis META-INF/ eines Applikations-Clients, EJB oder Bibliothek-JAR enthielt, oder wenn es eine beans.xml-Datei im Verzeichnis WEB-INF/ für ein WAR enthielt.

CDI 1.1 führte implizite Bean-Archive ein, bei denen es sich um Archive handelt, die eine oder mehrere Bean-Klassen mit einer Annotation zur Bean-Definition haben, oder eine oder mehrere Session-Beans. Implizite Bean-Archive werden von CDI geprüft, und während der Typerkennung werden nur Klassen mit Annotationen zur Bean-Definition gefunden. Weitere Informationen finden Sie unter Type and Bean Discovery in Contexts and Dependency Injection for the Java EE platform.

Ein Bean-Archiv hat den Bean-Discovery-Modus all, annotated oder none. Ein Bean-Archiv, das eine beans.xml-Datei ohne Version enthält, hat standardmäßig den Bean-Discovery-Modus all. Ein Bean-Archiv, das eine beans.xml-Datei der Version 1.1 oder höher enthält, muss den Parameter bean-discovery-mode angeben. Der Standardwert für diesen Parameter lautet annotated.

In den folgenden Fällen ist ein Archiv ist kein Bean-Archiv:

  • Es enthält eine beans.xml-Datei mit dem bean-discovery-mode none.
  • Es enthält eine CDI-Erweiterung ohne beans.xml-Datei.

In den folgenden Fällen ist ein Archiv ein explizites Bean-Archiv:

  • Das Archiv enthält eine beans.xml-Datei mit der Versionsnummer 1.1 oder höher und den bean-discovery-mode all.
  • Das Archiv enthält eine beans.xml-Datei ohne Versionsnummer.
  • Das Archiv enthält eine leere beans.xml-Datei.

In den folgenden Fällen ist ein Archiv ein implizites Bean-Archiv:

  • Das Archiv enthält eine oder mehrere Bean-Klassen mit einer Annotation zur Bean-Definition, oder eine oder mehrere Session-Beans, selbst wenn es keine beans.xml-Datei enthält.
  • Das Archiv enthält eine beans.xml-Datei mit dem bean-discovery-mode annotated.

CDI 1.2 beschränkt Annotationen zur Bean-Definition auf die folgenden:

  • @ApplicationScoped, @SessionScoped, @ConversationScoped und @RequestScoped
  • Alle anderen normalen Scope-Typen
  • @Interceptor und @Decorator
  • Alle Stereotyp-Annotationen, also Annotationen mit @Stereotype annotiert
  • @Dependent Scope-Annotation

Weitere Informationen über Bean-Archive finden Sie unter Bean Archives in Contexts and Dependency Injection for the Java EE platform.

Klärung der Konversationsauflösung

Der Lebenszyklus des Konversationskontexts wurde geändert, um Konflikte mit der Servlet-Spezifikation (wie in CDI Specification Issue CDI-411 beschrieben) zu vermeiden. Der Konversations-Scope ist während jeglicher Servlet-Anfragen aktiv und sollte andere Servlets oder Servlet-Filter nicht daran hindern, den Anfrage-Body oder die Zeichenkodierung einzustellen.

Observer-Auflösung

Die Ereignisauflösung wurde in CDI 1.2 teilweise umgeschrieben. In CDI 1.0 wurde ein Ereignis an eine Observer-Methode übergeben, wenn die Observer-Methode alle Ereignis-Qualifier besitzt. In CDI 1.2 wird ein Ereignis an eine Observer-Methode übergeben, wenn die Observer-Methode keine Ereignis-Qualifier oder nur eine Untermenge der Ereignis-Qualifier besitzt.

5.6. Migrieren expliziter Modulabhängigkeiten

Die Einführung des modularen Klassenladesystems und JBoss Modules in der vorherigen Release von JBoss EAP ermöglichte eine genaue Steuerung der Klassen, die Applikationen zur Verfügung stehen. Dieses Feature ermöglichte Ihnen die Konfiguration expliziter Modulabhängigkeiten mithilfe der MANIFEST.MF-Datei oder der jboss-deployment-structure.xml Deployment-Deskriptordatei der Applikation.

Falls Sie explizite Modulabhängigkeiten in Ihrer Applikation definiert haben, sollten Sie sich der folgenden Änderungen in JBoss EAP 7 bewusst sein.

Überprüfen der Abhängigkeiten auf Verfügbarkeit

Die Module, die in JBoss EAP enthalten sind, haben sich geändert. Wenn Sie Ihre Applikation zu JBoss EAP 7 migrieren, prüfen Sie Ihre MANIFEST.MF- und jboss-deployment-structure.xml-Dateieinträge, um sicherzustellen, dass diese keine Module referenzieren, die aus dieser Produktrelease entfernt wurden.

Abhängigkeiten, die Annotations-Prüfung erfordern

Falls Ihre Abhängigkeiten Annotationen enthielten, die während der Annotationsprüfung verarbeitet werden mussten (z.B. beim Deklarieren von EJB-Interzeptoren), dann mussten Sie in der vorherigen Version von JBoss EAP einen Jandex-Index in einer neuen JAR-Datei generieren und einbeziehen und anschließend ein Flag in der MANIFEST.MF oder jboss-deployment-structure.xml Deployment-Deskriptordatei setzen.

JBoss EAP 7 generiert nun automatisch zur Laufzeit Annotationsindizes für statische Module, sodass Sie diese nicht mehr manuell erstellen müssen. Allerdings müssen Sie noch das annotations-Flag zur MANIFEST.MF-Datei oder zur jboss-deployment-structure.xml-Deployment-Deskriptordatei der Applikation hinzufügen, wie unten veranschaulicht.

Beispiel für Annotations-Flag in der MANIFEST.MF-Datei

Dependencies: com.company.my-ejb annotations, com.company.other

Beispiel für Annotations-Flag in der jboss-deployment-structure.xml-Datei

<jboss-deployment-structure>
  <deployment>
    <dependencies>
      <module name="com.company.my-ejb" annotations="true"/>
      <module name="com.company.other"/>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

5.7. Änderungen hinsichtlich Hibernate und JPA

5.7.1. Hibernate ORM 3.0

Die Integrationsklassen, die eine Verwendung von Hibernate ORM 3 in der vorherigen Release erleichtert haben, wurden aus JBoss EAP 7 entfernt. Falls Ihre Applikation noch Hibernate ORM 3 Bibliotheken verwendet, empfehlen wir Ihnen dringend, Ihre Applikation auf Hibernate ORM 5 zu migrieren, da Hibernate ORM 3 nicht mehr ohne Weiteres in JBoss EAP funktionieren wird. Falls Sie nicht zu Hibernate ORM 5 migrieren können, müssen Sie ein angepasstes JBoss-Modul für die Hibernate ORM 3 JARs definieren und die Hibernate ORM 5 Klassen aus Ihrer Applikation ausschließen.

5.7.2. Hibernate ORM 4.0 – 4.3

Falls Ihre Applikation einen aktiven Second-Level-Cache benötigt, sollten Sie zu Hibernate ORM 5 migrieren, was in Infinispan 8.x integriert ist.

Applikationen, die mit Hibernate ORM 4.x geschrieben wurden, können weiterhin Hibernate ORM 4.x verwenden. Sie müssen ein angepasstes JBoss-Modul für die Hibernate ORM 4.x JARs definieren und die Hibernate ORM 5 Klassen aus Ihrer Applikation ausschließen. Allerdings empfehlen wir Ihnen dringend, Ihren Applikationscode zur Verwendung von Hibernate ORM 5 umzuschreiben. Informationen über die Migration zu Hibernate ORM 5 finden Sie unter Migrieren zu Hibernate ORM 5.

5.7.3. Hibernate ORM 5

Falls Ihre Applikation eine persistence.xml-Datei enthält oder der Code die Annotationen @PersistenceContext oder @PersistenceUnit verwendet, so spürt JBoss EAP 7 dies während des Deployments auf und geht davon aus, dass die Applikation JPA verwendet. es fügt dem Klassenpfad Ihrer Applikation implizit die Hibernate ORM 5 Bibliotheken sowie ein paar andere Abhängigkeiten hinzu und verwendet standardmäßig diese Bibliotheken.

5.7.4. Migrieren zu Hibernate ORM 5

Dieser Abschnitt behandelt die erforderlichen Änderungen für die Migration von Hibernate ORM Version 4.3 zu Version 5. Weitere Informationen über die Veränderungen von Hibernate ORM 5 im Vergleich zu Hibernate ORM 4 finden Sie im Hibernate ORM 5.0 Migration Guide.

Entfernte und veraltete Klassen

Die folgenden veralteten Klassen wurden aus Hibernate ORM 5 entfernt.

Sonstige Änderungen an Klassen und Paketen
Typenhandhabung
  • Integrierte org.hibernate.type.descriptor.sql.SqlTypeDescriptor-Implementierungen registrieren sich nicht mehr automatisch bei der org.hibernate.type.descriptor.sql.SqlTypeDescriptorRegistry. Applikationen, die angepasste SqlTypeDescriptor-Implementierungen verwenden, welche die integrierten Implementierungen erweitern und auf dieses Verhalten angewiesen sind, müssen aktualisiert werden, um selbst SqlTypeDescriptorRegistry.addDescriptor() aufzurufen.
  • Für IDs, die als generierte UUIDs definiert sind, setzen einige Datenbanken voraus, dass Sie für die Generierung von BINARY(16) die @Column(length=16) ausdrücklich festlegen, damit der Abgleich einwandfrei funktioniert.
  • Für EnumType-Mappings, die in der Datei hbm.xml definiert sind und Sie javax.persistence.EnumType.STRING name-mapping möchten, muss diese Konfiguration ausdrücklich angegeben werden. Nutzen Sie dazu entweder die Einstellung useNamed(true) oder geben Sie einen VARCHAR-Wert von 12 an.
Transaktionsverwaltung
  • Die Transaktions-SPI wurde in Hibernate ORM 5 umfassend überarbeitet. In Hibernate ORM 4.3 verwendeten Sie die org.hibernate.Transaction-API, um direkt auf verschiedene Back-end-Transaktionsstrategien zuzugreifen. Hibernate ORM 5 führte eine Ebene der Indirektion ein. Im Back-end kommuniziert die org.hibernate.Transaction Implementierung nun mit einem org.hibernate.resource.transaction.TransactionCoordinator, der den transaktionalen Kontext für eine angegebene Sitzung repräsentiert gemäß Back-end-Strategie. Dies hat zwar keine direkten Auswirkungen auf Entwickler, könnte aber die Bootstrap-Konfiguration beeinflussen. Bislang spezifizierten Applikationen die Eigenschaft hibernate.transaction.factory_class (die jetzt veraltet ist) und verwiesen auf einen org.hibernate.engine.transaction.spi.TransactionFactory-FQN (vollständigen Namen). Mit Hibernate ORM 5 spezifizieren Sie die Einstellung hibernate.transaction.coordinator_class und verweisen auf einen org.hibernate.resource.transaction.TransactionCoordinatorBuilder. Siehe org.hibernate.cfg.AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY für weitere Einzelheiten.
  • Die folgenden Kurznamen werden jetzt erkannt.

    • jdbc: Manage transactions using the JDBC java.sql.Connection. This is the default for non-JPA transactions.
    • jta: Manage transactions using JTA.

      Wichtig

      If a JPA application does not provide a setting for the hibernate.transaction.coordinator_class property, Hibernate will automatically build the proper transaction coordinator based on the transaction type for the persistence unit.

      If a non-JPA application does not provide a setting for the hibernate.transaction.coordinator_class property, Hibernate will default to jdbc to manage the transactions. This default will cause problems if the application actually uses JTA-based transactions. A non-JPA application that uses JTA-based transactions should explicitly set the hibernate.transaction.coordinator_class property value to jta or provide a custom org.hibernate.resource.transaction.TransactionCoordinatorBuilder that builds a org.hibernate.resource.transaction.TransactionCoordinator that properly coordinates with JTA-based transactions.

Sonstige Hibernate ORM 5 Änderungen
  • Die cfg.xml-Dateien werden wieder vollständig analysiert und integriert in Ereignissen, in der Sicherheit und in anderen Funktionen.
  • Die mittels EntityManagerFactory von cfg.xml geladenen Eigenschaften haben die Namen bislang nicht mit dem Präfix hibernate versehen. Dies wurde jetzt vereinheitlicht.
  • Die Konfiguration ist nicht mehr serialisierbar.
  • Die Methode org.hibernate.dialect.Dialect.getQuerySequencesString() ruft nun Werte für Katalog, Schema und Inkrement ab.
  • Der Modifier AuditConfiguration wurde aus org.hibernate.envers.boot.internal.EnversService entfernt.
  • Die Methodenparameter AuditStrategy wurden geändert, um die hinfällige AuditConfiguration zu entfernen und den neuen EnversService zu verwenden.
  • Verschiedene Klassen und Schnittstellen im org.hibernate.hql.spi-Paket und Unterpaketen wurden verlegt in das neue Paket org.hibernate.hql.spi.id. Dazu gehört die Klasse MultiTableBulkIdStrategy sowie die Schnittstellen AbstractTableBasedBulkIdHandler, TableBasedDeleteHandlerImpl und TableBasedUpdateHandlerImpl samt deren Unterklassen.
  • Die Verträge für Eigenschaftszugriff wurden vollständig überarbeitet.
  • Gültige Werte für die Einstellung hibernate.cache.default_cache_concurrency_strategy sind nun definiert anhand der Methode org.hibernate.cache.spi.access.AccessType.getExternalName() anstelle der Aufzählungskonstanten org.hibernate.cache.spi.access.AccessType. Dies steht im Einklang mit anderen Hibernate-Einstellungen.

5.8. Änderungen hinsichtlich Hibernate Search

Die in JBoss EAP 7 integrierte Version von Hibernate Search hat sich geändert. Die vorherige Release von JBoss EAP enthielt Hibernate Search 4.6.x. JBoss EAP 7 enthält nun Hibernate Search 5.5.x.

Hibernate Search 5.5 is built upon Apache Lucene 5.3.1. If you use any native Lucene APIs, be sure to align with this version. The Hibernate Search 5.5 API wraps and hides the complexity of many of the Lucene API changes made between version 3 and version 5, however, some classes are now deprecated, renamed, or repackaged. This section describes how these changes might impact your application code.

Änderungen des Hibernate Search Mappings

Indexierung von ID-Feldern in eingebetteten Objekten

Wenn eine @IndexedEmbedded-Annotation verwendet wird, um Felder von einem zugehörigen Objekt einzubinden, dann ist die id des zugehörigen Objekts nicht mehr enthalten. Sie können die Einbeziehung der id aktivieren, indem Sie den Parameter includeEmbeddedObjectId der Annotation @IndexedEmbedded verwenden.

@IndexedEmbedded(includeEmbeddedObjectId=true)
Änderungen der Formatierung von Zahlen- und Datumsindexierung

Zahlen und Daten werden nun standardmäßig als numerische Felder indiziert. Eigenschaften des Typs int, long, float, double und deren jeweiligen Wrapper-Klassen werden nicht mehr als Zeichenketten (Strings) indiziert. Stattdessen werden sie nun unter Verwendung von Lucenes numerischer Kodierung indiziert. Die id-Felder stellen eine Ausnahme von dieser Regel dar. Selbst wenn es sich bei ihnen um einen numerischen Typ handelt, werden sie standardmäßig dennoch als Zeichenketten indiziert. Die Verwendung von @NumericField ist nun obsolet, es sei denn, Sie möchten eine angepasste Länge für die numerische Kodierung festlegen. Sie können das alte stringbasierte Indexformat behalten, indem Sie explizit eine Feld-Bridge zur String-Kodierung angeben. Für Integer ist dies die org.hibernate.search.bridge.builtin.IntegerBridge. Im Paket org.hibernate.search.bridge.builtin finden Sie andere öffentlich verfügbare Bridges.

Date und Calendar werden nicht mehr als Zeichenketten indiziert. Stattdessen werden sie nun als Long-Werte kodiert, die für die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 GMT stehen. Sie können das Indexierungsformat ändern, indem Sie die neue EncodingType-Aufzählung verwenden. Zum Beispiel:

@DateBridge(encoding=EncodingType.STRING)
@CalendarBridge(encoding=EncodingType.STRING)

Die geänderte Kodierung für Zahlen und Daten ist wichtig und kann weitreichende Auswirkungen auf das Applikationsverhalten haben. Falls Sie eine Anfrage haben, die auf ein Feld abzielt, das bislang stringkodiert war, jetzt jedoch numerisch kodiert wird, müssen Sie die Anfrage entsprechend umschreiben. Numerische Felder müssen mit einer NumericRangeQuery durchsucht werden. Sie müssen auch sicherstellen, dass alle Felder, auf die die Facettierung abzielt, nun stringkodiert sind. Falls Sie die Search Query DSL verwenden, sollte die korrekte Anfrage automatisch für Sie erstellt werden.

Sonstige Änderungen hinsichtlich Hibernate Search

  • Die Sortierungsoptionen wurden verbessert; die inkorrekte Angabe der Feldkodierung für Sortierungsoptionen führt nun zu einem Laufzeitfehler. Lucene bietet zudem eine leistungsstärkere Sortierung, wenn die in der Sortierung verwendeten Felder bereits bekannt sind. Hibernate Search 5.5 bietet die neuen Annotationen @SortableField bzw. @SortableFields. Unter Migration Guide from Hibernate Search 5.4 to 5.5 finden Sie weitere Informationen.
  • Die Lucene SortField-API erfordert die folgenden Änderungen am Applikationscode.

    In der vorherigen Release von JBoss EAP legten Sie den Typ des Sortierungsfeldes wie folgt in der Anfrage fest.

    fulltextQuery.setSort(new Sort(new SortField("title", SortField.STRING)));

    Nachfolgend sehen Sie ein Beispiel dafür, wie dies in JBoss EAP 7 angegeben wird.

    fulltextQuery.setSort(new Sort(new SortField("title", SortField.Type.STRING)));
  • Da SearchFactory nur von ORM-Integrationen verwendet werden sollte, wurde sie vom Modul hibernate-search-engine in das Modul hibernate-search-orm verlegt. Andere Integratoren sollten ausschließlich SearchIntegrator verwenden, was das veraltete SearchFactoryIntegrator ersetzt.
  • Der Aufzählungswert SpatialMode.GRID wurde umgenannt zu SpatialMode.HASH.
  • FullTextIndexEventListener ist nun eine finale Klasse. Falls Sie derzeit diese Klasse erweitern, müssen Sie eine alternative Lösung finden, um dieselbe Funktionalität zu erreichen.
  • Das Modul hibernate-search-analyzers wurde entfernt. Die empfohlene Herangehensweise ist nun die direkte Verwendung des jeweiligen Lucene-Artefakts, zum Beispiel org.apache.lucene:lucene-analyzers-common.
  • The JMS controller API has changed. The JMS back-end dependency on Hibernate ORM was removed so that it could be used in other non-ORM environments. A consequence is that implementors of org.hibernate.search.backend.impl.jms.AbstractJMSHibernateSearchController must adjust to the new signature. This class is an internal class and it is recommended to use it as an example instead of extending it.
  • Die org.hibernate.search.spi.ServiceProvider-SPI wurde refaktoriert. Falls Sie den alten Dienstvertrag integriert haben, werfen Sie einen Blick auf das Hibernate Search 5.5 Javadoc von ServiceManager, Service, Startable und Stoppable für Einzelheiten zum neuen Vertrag.
  • Falls Sie die von Lucene 3.x generierten Indexe behalten haben und diese nicht mit Hibernate Search 5.0 oder höher neu erstellt haben, erhalten Sie den Fehler IndexFormatTooOldException. Es wird empfohlen, die Indexe mit dem Massenindexer neu zu erstellen. Falls Ihnen das nicht möglich ist, sollten Sie Lucenes IndexUpgrader probieren. Sie müssen die Hibernate Search Mappings sorgfältig aktualisieren für den Fall, dass sich das Standardverhalten geändert hat. Weitere Informationen siehe Apache Lucene Migration Guide.
  • Apache Lucene wurde in JBoss EAP 7 aktualisiert von 3.6 auf 5.3. Falls Ihr Code Lucene-Code direkt importiert, finden Sie unter Apache Lucene Migration Guide die Einzelheiten dieser Änderungen. Weitere Informationen finden Sie auch im Lucene Change Log.
  • Wenn Sie @Field(indexNullAs=) zum Kodieren eines Nullmarker-Werts im Index verwenden, muss der Typ des Markers kompatibel mit allen anderen Werten sein, die in demselben Feld indexiert werden. Beispielsweise war es bislang möglich, einen Nullwert für numerische Felder mittels der Zeichenkette »null« zu kodieren. Dies ist nicht mehr zulässig. Stattdessen müssen Sie eine Zahl wählen, die für den null-Wert steht, wie z.B. -1.
  • An der Facettierungs-Engine wurden deutliche Verbesserungen vorgenommen. Die meisten Änderungen haben keine Auswirkungen auf die API. Die einzige nennenswerte Ausnahme ist, dass Sie nun alle Felder, die Sie bei der Facettierung verwenden möchten, mit den Annotationen @Facet oder @Facets annotieren müssen.

Unbenannte und neu paketierte Klassen in Hibernate Search

Nachfolgend sehen Sie eine Liste mit Hibernate Search Klassen, die neu paketiert oder umbenannt wurden.

Bisherige Pakete und KlassenNeue Pakete und Klassen

org.hibernate.search.Environment

org.hibernate.search.cfg.Environment

org.hibernate.search.FullTextFilter

org.hibernate.search.filter.FullTextFilter

org.hibernate.search.ProjectionConstants

org.hibernate.search.engine.ProjectionConstants

org.hibernate.search.SearchException

org.hibernate.search.exception.SearchException

org.hibernate.search.Version

org.hibernate.search.engine.Version

Unbenannte und neu paketierte Klassen in Lucene

Anfragen-Parser wurden in ein neues Modul verlegt, weshalb sich das Paket geändert hat von org.apache.lucene.queryParser.QueryParser auf org.apache.lucene.queryparser.classic.QueryParser.

Viele der Lucene-Analyzers wurden refaktoriert, weshalb sich deren Pakete geändert haben. Siehe Apache Lucene Documentation für Einzelheiten zu den neuen Paketen.

Einige Apache Solr-Dienstklassen wie beispielsweise TokenizerFactory oder TokenFilterFactory wurden in Apache Lucene verlegt. Falls Ihre Applikation diese Dienste oder angepasste Analyzer verwendet, müssen Sie die neuen Paketnamen in Apache Lucene suchen.

Siehe Apache Lucene Migration Guide für weitere Informationen.

Veraltete APIs in Hibernate Search

Eine vollständige Liste der veralteten Schnittstellen, Klassen, Aufzählungstypen, Methoden, Konstruktoren und Aufzählungskonstanten finden Sie unter Hibernate Search Deprecated API.

Veraltete Schnittstellen in Hibernate Search
SchnittstelleBeschreibung

org.hibernate.search.store.IndexShardingStrategy

Veraltet ab Hibernate Search 4.4. Wird möglicherweise ab Search 5 entfernt. Verwenden Sie stattdessen ShardIdentifierProvider.

org.hibernate.search.store.Workspace

Diese Schnittstelle wird verlegt und sollte als nicht öffentliche API betrachtet werden. Weitere Informationen siehe HSEARCH-1915.

Veraltete Klassen in Hibernate Search
KlasseBeschreibung

org.hibernate.search.filter.FilterKey

Angepasste Filter-Keys gelten als veraltet und werden planmäßig aus Hibernate Search 6 entfernt. Ab Hibernate Search 5.1 werden Keys zum Cachen von Lucene-Filtern automatisch basierend auf angegebenen Filterparametern berechnet.

org.hibernate.search.filter.StandardFilterKey

Angepasste Filter-Keys gelten als veraltet und werden planmäßig aus Hibernate Search 6 entfernt. Ab Hibernate Search 5.1 werden Keys zum Cachen von Lucene-Filtern automatisch basierend auf angegebenen Filterparametern berechnet.

Veraltete Aufzählungen in Hibernate Search
AufzählungBeschreibung

org.hibernate.search.annotations.FieldCacheType

Entfernen Sie die veraltete Annotation CacheFromIndex. Siehe Veraltete Annotationen in Hibernate Search.

Veraltete Annotationen in Hibernate Search
AnnotationBeschreibung

org.hibernate.search.annotations.CacheFromIndex

Entfernen Sie die Annotation. Ein Ersatz ist nicht nötig.

org.hibernate.search.annotations.Key

Angepasste Filter-Cache-Keys sind eine veraltete Funktion und werden planmäßig aus Hibernate Search 6 entfernt. Ab Hibernate Search 5.1 werden Filter-Cache-Keys automatisch basierend auf den Filterparametern berechnet, sodass es nicht mehr nötig ist, ein Key-Objekt anzugeben.

Veraltete Methoden in Hibernate Search
MethodeBeschreibung

org.hibernate.search.FullTextSharedSessionBuilder.autoClose()

Kein Ersatz

org.hibernate.search.FullTextSharedSessionBuilder.autoClose(boolean)

Kein Ersatz

org.hibernate.search.cfg.IndexedMapping.cacheFromIndex(FieldCacheType…​)

Dies wird ersatzlos entfernt.

org.hibernate.search.cfg.EntityDescriptor.getCacheInMemory()

Dies wird ersatzlos entfernt.

org.hibernate.search.cfg.ContainedInMapping.numericField()

Rufen Sie stattdessen field().numericField() auf.

org.hibernate.search.cfg.EntityDescriptor.setCacheInMemory(Map<String, Object>)

Dies wird ersatzlos entfernt.

org.hibernate.search.MassIndexer.threadsForSubsequentFetching(int)

Diese Methode wird entfernt.

org.hibernate.search.query.dsl.FuzzyContext.withThreshold(float)

Verwenden Sie FuzzyContext.withEditDistanceUpTo(int).

Veraltete Konstruktoren in Hibernate Search
KonstruktorBeschreibung

org.hibernate.search.cfg.NumericFieldMapping(PropertyDescriptor, EntityDescriptor, SearchMapping)

Verwenden Sie stattdessen NumericFieldMapping.NumericFieldMapping(String, PropertyDescriptor, EntityDescriptor, SearchMapping).

Änderungen mit Auswirkungen auf erweiterte Integratoren

Dieser Abschnitt beschreibt Änderungen, die nicht Teil der öffentlichen API sind. Sie sollten keinerlei Auswirkungen auf normale Entwickler haben, da auf diese Artefakte nur von Integratoren zugegriffen wird, die das Hibernate Search Framework erweitern.

5.9. Migrieren von Entity-Beans zu JPA

Unterstützung für EJB-Entity-Beans ist optional in Java EE 7, und sie werden in JBoss EAP 7 nicht unterstützt. Das bedeutet, dass Container-Managed Persistence (CMP) und Bean-Managed Persistence (BMP) Entity-Beans für die Migration zu JBoss EAP 7 umgeschrieben werden müssen, um Java-Persistence-API (JPA) Entitys zu verwenden.

In früheren Releases von JBoss EAP wurden Entity-Beans im Applikations-Quellcode erstellt, indem die Klasse javax.ejb.EntityBean erweitert und die erforderlichen Methoden implementiert wurden. Anschließend wurden Sie in der Datei ejb-jar.xml konfiguriert. Eine CMP-Entity-Bean wurde spezifiziert mithilfe eines <entity>-Elements, das ein <persistence-type>-Unterelement mit dem Wert Container enthielt. Eine BMP-Entity-Bean wurde spezifiziert mithilfe eines <entity>-Elements, das ein <persistence-type>-Unterelement mit dem Wert Bean enthielt.

In JBoss EAP 7 müssen Sie jegliche CMP- und BMP-Entity-Beans in Ihrem Code durch Java Persistence API (JPA) Entitys ersetzen. JPA-Entitys werden erstellt mithilfe von javax.persistence.*-Klassen und werden in der Datei persistence.xml definiert.

Nachfolgend sehen Sie ein Beispiel für eine JPA-Entity-Klasse

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
// User is a keyword in some SQL dialects!
@Table(name = "MyUsers")
public class MyUser {
    @Id
    @GeneratedValue
    private Long id;

    @Column(unique = true)
    private String username;
    private String firstName;
    private String lastName;

    public Long getId() {
        return id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

Nachfolgend sehen Sie ein Beispiel für eine persistence.xml-Datei.

<persistence version="2.1"
      xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
        http://xmlns.jcp.org/xml/ns/persistence
        http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="my-unique-persistence-unit-name">
    <properties>
      // properties...
    </properties>
  </persistence-unit>
</persistence>

Beispiele für JPA-Entitys finden Sie in den Quickstarts bmt, cmt und hibernate5, die in JBoss EAP 7 enthalten sind.

5.10. Änderungen der JPA-Persistenzeigenschaft

Eine neue Persistenzeigenschaft namens jboss.as.jpa.deferdetach wurde hinzugefügt, um Kompatibilität mit dem Persistenzverhalten früherer Releases von JBoss EAP zu bieten.

Die Eigenschaft jboss.as.jpa.deferdetach steuert, ob der transaktionsweite Persistenzkontext, der in einem nicht-JTA-Transaktions-Thread verwendet wird, geladene Entitys nach jedem EntityManager-Aufruf löst, oder ob er wartet, bis der Persistenzkontext geschlossen wird, beispielsweise wenn der Session-Bean-Aufruf beendet ist. Der Standardwert der Eigenschaft ist false, was bedeutet, dass Entitys nach jedem EntityManager-Aufruf gelöst oder gelöscht werden. Dies ist das korrekte Standardverhalten gemäß JPA-Spezifikation. Ist der Eigenschaftswert auf true gesetzt, dann werden die Entitys nicht gelöst, ehe der Persistenzkontext geschlossen wurde.

In JBoss EAP 5 verhielt sich die Persistenz, als sei die Eigenschaft jboss.as.jpa.deferdetach auf true eingestellt. Um dasselbe Verhalten zu erreichen, wenn Sie Ihre Applikation von JBoss EAP 5 zu JBoss EAP 7 migrieren, müssen Sie den Eigenschaftswert jboss.as.jpa.deferdetach auf true einstellen in Ihrer persistence.xml, wie im folgenden Beispiel veranschaulicht.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="EAP5_COMPAT_PU">
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <properties>
         <property name="jboss.as.jpa.deferdetach" value="true" />
    </properties>
  </persistence-unit>
</persistence>

In JBoss EAP 6 verhielt sich die Persistenz, als sei die Eigenschaft jboss.as.jpa.deferdetach auf false eingestellt. Dies ist dasselbe Verhalten wie in JBoss EAP 7, also sind keinerlei Änderungen nötig, wenn Sie Ihre Applikation migrieren.

5.11. Migrieren von EJB-Client-Code

Der standardmäßige Remote-Connector und Port wurde in JBoss EAP 7 geändert. Details über diese Änderung finden Sie unter Änderungen des Remote-URL-Connectors und -Ports.

Falls Sie die migrate-Operation zur Migration der Serverkonfiguration verwenden, werden die alten Einstellungen bewahrt, sodass die unten beschriebenen Änderungen nicht notwendig sind. Wenn Sie allerdings die neue JBoss EAP 7 Standardkonfiguration ausführen, müssen Sie die folgenden Änderungen vornehmen.

5.11.1. Aktualisieren des standardmäßigen Remote-Verbindungsports

Ändern Sie den Wert für den Remote-Verbindungsport von 4447 auf 8080 in der Datei jboss-ejb-client.properties.

Nachfolgend sehen Sie Beispiele für eine jboss-ejb-client.properties-Datei in der vorherigen und in der aktuellen Release.

Beispiel: JBoss EAP 6 jboss-ejb-client.properties Datei

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

Beispiel: JBoss EAP 7 jboss-ejb-client.properties Datei

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

5.11.2. Aktualisieren des Standard-Connectors

Falls Sie die neue JBoss EAP 7 Konfiguration ausführen, hat sich der Standard-Connector von remote auf http-remoting geändert. Diese Änderung betrifft Clients, die Bibliotheken aus einer Release von JBoss EAP nutzen und mit einem Server in einer anderen Release verbinden.

  • Falls eine Client-Applikation die EJB-Client-Bibliothek von JBoss EAP 6 verwendet und mit einem JBoss EAP 7 Server verbinden will, dann muss der Server dazu konfiguriert sein, einen remote-Connector auf einem anderen Port als 8080 verfügbar zu machen. Der Client muss dann mit dem neu konfigurierten Connector verbinden.
  • Eine Client-Applikation, die die EJB-Client-Bibliothek von JBoss EAP 7 verwendet und mit einem JBoss EAP 6 Server verbinden will, muss darüber informiert sein, dass die Server-Instanz nicht den http-remoting-Connector verwendet, sondern einen remote-Connector. Dies erreichen Sie, indem Sie eine neue clientseitige Verbindungseigenschaft definieren.

    remote.connection.default.protocol=remote

5.11.3. Migrieren von Remote-Naming-Client-Code

Falls Sie die neue standardmäßige JBoss EAP 7 Konfiguration ausführen, müssen Sie Ihren Client-Code zur Verwendung des neuen standardmäßigen Remote-Ports und -Connectors konfigurieren.

Nachfolgend sehen Sie ein Beispiel dafür, wie Remote-Naming-Eigenschaften im Client-Code in JBoss EAP 6 spezifiziert wurden.

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://localhost:4447

Nachfolgend sehen Sie ein Beispiel dafür, wie Remote-Naming-Eigenschaften im Client-Code in JBoss EAP 7 spezifiziert werden.

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=http-remoting://localhost:8080

5.12. Migrieren von Deployment-Plan-Konfigurationen

Die Java EE Spezifikation für Applikations-Deployment (JSR-88) wurde dazu entworfen, um einen Vertrag zu definieren, der es Tools verschiedener Anbieter ermöglichen sollte, Applikationen auf jeder beliebigen Java EE Plattform zu konfigurieren und bereitzustellen. Der Vertrag erforderte von den Anbietern der Java EE Produkte, DeploymentManager und andere javax.enterprise.deploy.spi-Schnittstellen bereitzustellen für den Zugriff durch die Tool-Anbieter. Im Falle von JBoss EAP 6 besteht ein Deployment-Plan aus einem XML-Deskriptor namens deployment-plan.xml, der in einem ZIP- oder JAR-Archiv gebündelt ist.

Diese Spezifikation fand nur wenig Anwendung, da die meisten Applikationsserver-Produkte ihre eigenen, funktionsreicheren Deployment-Lösungen bereitstellten. Aus diesem Grund wurde die Unterstützung für JSR-88 in Java EE 7 aufgegeben und infolgedessen auch in JBoss EAP 7.

If you used JSR-88 to deploy your application, you must now use another method to deploy the application. The JBoss EAP management CLI deploy command provides a standard way to deploy archives to standalone servers or to server groups in a managed domain. For more information about the management CLI, see the Management CLI Guide.

5.13. Migrieren von angepassten Applikations-Valves

Sie müssen angepasste Valves und jegliche Valves, die in der XML-Datei jboss-web.xml definiert sind, manuell migrieren. Dazu gehören Valves, die erstellt wurden durch Erweitern der org.apache.catalina.valves.ValveBase-Klasse und Konfigurieren des <valve>-Elements in der jboss-web.xml-Deskriptordatei.

Wichtig

Angepasste Valves und solche Valves, die in der jboss-web.xml-Datei definiert sind, müssen neu geschrieben oder ersetzt werden durch den jeweiligen integrierten Undertow-Handler. Informationen über die Zuordnung von Valves zu Undertow-Handlern finden Sie unter Migrieren von JBoss Web Valves.

Authentifikations-Valves müssen manuell ersetzt werden durch die integrierten Undertow-Authentifizierungsmechanismen.

Migrieren der in Deployments konfigurierten Valves

In JBoss EAP 6 konnten Sie auf Applikationsebene angepasste Valves definieren, indem Sie die diese in der jboss-web.xml-Webapplikations-Deskriptordatei konfigurierten. In JBoss EAP 7 ist dies ebenfalls möglich mithilfe von Undertow-Handlern.

Nachfolgend sehen Sie ein Beispiel für eine Valve, die in der jboss-web.xml-Datei in JBoss EAP 6 konfiguriert ist.

<jboss-web>
    <valve>
        <class-name>org.jboss.examples.MyValve</class-name>
​        <param>
    ​        <param-name>myParam</param-name>
​            <param-value>foobar</param-value>
    ​    </param>
    </valve>
</jboss-web>

For more information about how to create and configure custom handlers in JBoss EAP, see Creating Custom Handlers in the JBoss EAP Development Guide.

Migrieren von angepassten Authentifikations-Valves

Weitere Informationen über die Migration von Authentifikations-Valves finden Sie unter Sicherheitsrelevante Applikationsänderungen

5.14. Sicherheitsrelevante Applikationsänderungen

Aufgrund des Wechsels von JBoss Web nach Undertow sind Änderungen an der Sicherheitskonfiguration in JBoss EAP 7 erforderlich.

5.14.1. Migrieren von Authentifikations-Valves

Authentifikations-Valves müssen manuell ersetzt werden durch die integrierten Undertow-Authentifizierungsmechanismen. In den folgenden Abschnitten finden Sie weitere Informationen über das Migrieren von Authentifikations-Valves.

5.14.3. Sonstige sicherheitsrelevante Applikationsänderungen

For information about the differences in SSO configuration with Kerberos, see Differences from Configuring Previous Versions JBoss EAP in How to Set Up SSO with Kerberos for JBoss EAP.

5.15. Änderungen an der JBoss-Protokollierung

Falls Ihre Applikation JBoss-Protokollierung verwendet, beachten Sie, dass die Annotationen im org.jboss.logging-Paket in JBoss EAP 7 nunmehr als veraltet gelten. Sie wurden in das org.jboss.logging.annotations-Paket verlegt, weshalb Sie Ihren Quellcode zum Import des neuen Pakets ändern müssen.

Die Annotationen wurden zudem in eine separate Maven groupId:artifactId:version (GAV) ID verlegt, sodass Sie eine neue Projektabhängigkeit für org.jboss.logging:jboss-logging-annotations in der pom.xml-Datei Ihres Projekts hinzufügen müssen.

Anmerkung

Nur die Logging-Annotationen wurden verlegt. Die org.jboss.logging.BasicLogger und org.jboss.logging.Logger befinden sich weiterhin im org.jboss.logging-Paket.

Die folgende Tabelle führt die veralteten Annotationsklassen und entsprechenden Ersatz auf.

Tabelle 5.1. Ersatz für veraltete Logging-Annotationen

Veraltete KlasseErsatzklasse

org.jboss.logging.Cause

org.jboss.logging.annotations.Cause

org.jboss.logging.Field

org.jboss.logging.annotations.Field

org.jboss.logging.FormatWith

org.jboss.logging.annotations.FormatWith

org.jboss.logging.LoggingClass

org.jboss.logging.annotations.LoggingClass

org.jboss.logging.LogMessage

org.jboss.logging.annotations.LogMessage

org.jboss.logging.Message

org.jboss.logging.annotations.Message

org.jboss.logging.MessageBundle

org.jboss.logging.annotations.MessageBundle

org.jboss.logging.MessageLogger

org.jboss.logging.annotations.MessageLogger

org.jboss.logging.Param

org.jboss.logging.annotations.Param

org.jboss.logging.Property

org.jboss.logging.annotations.Property

5.16. JavaServer Faces (JSF) Code-Änderungen

Beendete Unterstützung für JSF 1.2

JBoss EAP 6 ermöglichte es Ihnen, weiterhin JSF 1.2 in Ihrem Applikations-Deployment zu verwenden, indem Sie eine jboss-deployment-structure.xml-Datei erstellten.

JBoss EAP 7 enthält JSF 2.2 und unterstützt die JSF 1.2 API nicht mehr. Falls Ihre Applikation JSF 1.2 verwendet, müssen Sie diese auf JSF 2.2 umschreiben.

Kompatibilitätsprobleme zwischen JSF 2.1 und JSF 2.2

Die JSF 2.1 und JSF 2.2 APIs sind nicht vollständig kompatibel. Der Wert der Konstante FACELET_CONTEXT_KEY hat sich geändert von com.sun.faces.facelets.FACELET_CONTEXT auf javax.faces.FACELET_CONTEXT in der neuen Releases. Der Compiler führt für diesen Wert eine Inline-Ersetzung durch – Code, der für eine Release kompiliert wurde, kann nicht für eine anderen Release funktionieren.

Applikationen, die ähnlichen Code wie im folgenden Beispiel enthalten und mit der JSF 2.1 API kompiliert wurden, jedoch in JBoss EAP 7 (was die JSF 2.2 API verwendet) ausgeführt werden, verursachen eine NullPointerException. Um dieses Problem zu beheben, müssen Sie die Applikation mit der JSF 2.2 API neu kompilieren.

Object obj = FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);

Siehe JAVASERVERFACES_SPEC_PUBLIC-1257 für weitere Informationen.

5.17. Änderungen am Modul-Klassenladen

In JBoss EAP 7 hat sich das Verhalten des Klassenladens geändert in Fällen, in denen mehrere Module dieselben Klassen oder Pakete enthalten.

Angenommen es gibt zwei Module, MODULE_A und MODULE_B, die voneinander abhängen und zum Teil die gleichen Pakete enthalten. In JBoss EAP 6 hatten die Klassen oder Pakete, die von den Abhängigkeiten geladen wurden, Vorrang vor jenen, die im resource-root der module.xml-Datei angegeben wurden. Das bedeutet, dass MODULE_A die Pakete für MODULE_B sah und MODULE_B die Pakete für MODULE_A sah. Dieses Verhalten war verwirrend und ein Grund für mögliche Konflikte, weshalb es in JBoss EAP 7 geändert wurde. Jetzt haben die Klassen oder Pakete, die im resource-root in der module.xml-Datei angegeben werden, Vorrang vor jenen, die von der Abhängigkeit spezifiziert werden. Das bedeutet, dass MODULE_A die Pakete für MODULE_A sieht und MODULE_B die Pakete für MODULE_B sieht. Dies vermeidet Konflikte und sorgt für ein angemesseneres Verhalten.

If you have defined custom modules that include resource-root libraries or packages that contain classes that are duplicated in their module dependencies, you might see ClassCastException, LinkageError, class loading errors, or other changes in behavior when you migrate to JBoss EAP 7. To resolve these issues, you must configure your module.xml file to ensure only one version of a class is used. This can be accomplished by using either of the following approaches.

  • Sie können vermeiden, ein resource-root anzugeben, das doppelte Klassen in der Modulabhängigkeit definiert.
  • Sie können die Subelemente include und exclude der Elemente imports und exports verwenden, um das Klassenladen in der module.xml-Datei zu steuern. Nachfolgend sehen Sie ein Export-Element, das Klassen in dem angegebenen Paket ausschließt.

    <exports>
      <exclude path="com/mycompany/duplicateclassespath/"/>
    </exports>

Falls Sie es vorziehen, Ihr derzeitiges Verhalten beizubehalten, müssen Sie die Pakete der Abhängigkeiten von der abhängigen resource-root in der module.xml-Datei mithilfe des filter-Elements filtern. Dies ermöglicht es Ihnen, das derzeitige Verhalten beizubehalten, ohne manche Schleifen, die unter JBoss EAP 6 auftreten würden. Nachfolgend sehen Sie ein Beispiel für ein root-resource, das Klassen in einem angegebenen Paket filtert.

<resource-root path="mycompany.jar">
  <filter>
    <exclude path="com/mycompany/duplicateclassespath"/>
  </filter>
</resource-root>

For more information about modules and class loading, see Class Loading and Modules in the JBoss EAP Development Guide.

5.18. Änderungen des Applikations-Clusterings

5.18.1. Überblick über neue Clustering-Features

Die folgende Liste beschreibt einige der neuen Clustering-Features, die Sie kennen sollten, wenn Sie Ihre Applikation von JBoss EAP 6 zu JBoss EAP 7 migrieren.

  • JBoss EAP 7 introduces a new public API for building singleton services that significantly simplifies the process. For more information, see Implement an HA Singleton in Developing EJB Applications for JBoss EAP.
  • A singleton deployment can be configured to deploy and start on only a single node in the cluster at a time. For more information, see HA Singleton Deployments in the JBoss EAP Development Guide.
  • You can now define clustered singleton MDBs. For more information, see Clustered Singleton MDBs in Developing EJB Applications for JBoss EAP.
  • JBoss EAP 7 includes the Undertow mod_cluster implementation. This offers a pure Java load balancing solution that does not require an httpd web server. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.

The remainder of this section describes how clustering changes might impact the migration of your applications to JBoss EAP 7.

5.18.2. Änderungen des Web-Session-Clusterings

JBoss EAP 7 führt eine neue Implementierung für Web-Session-Clustering ein. Diese ersetzt die vorherige Implementierung, die eng mit dem veralteten JBoss Web Subsystem-Quellcode verknüpft war.

Infolge der neuen Implementierung für Web-Session-Clustering verändert sich auch die Konfiguration der Applikation in der jboss-web.xml JBoss proprietären Webapplikation-XML-Deskriptordatei. Die nachfolgend aufgeführten sind die einzigen, in der Datei noch verbliebenen Clustering-Konfigurationselemente.

<jboss-web>
  ...
  <max-active-sessions>...</max-active-sessions>
  ...
  <replication-config>
    <replication-granularity>...</replication-granularity>
    <cache-name>...</cache-name>
  </replication-config>
  ...
</jboss-web>

Die folgende Tabelle beschreibt, wie für Elemente in der jboss-web.xml-Datei, die nun veraltet sind, ein ähnliches Verhalten erreicht werden kann.

KonfigurationselementBeschreibung der Änderung

<max-active-sessions/>

Bislang schlug die Session-Erstellung fehl, falls dadurch die Anzahl der aktiven Sessions den in <max-active-sessions/> definierten Wert überstiegen worden wäre.

In der neuen Implementierung wird <max-active-sessions/> dazu verwendet, um Session-Passivierung zu ermöglichen. Falls durch die Erstellung einer neuen Session die Anzahl der aktiven Sessions den <max-active-sessions/> Wert übersteigen würde, so wird die älteste, dem Session-Manager bekannte Session passiviert, um Platz für die neue Session zu schaffen.

<passivation-config/>

Dieses Konfigurationselement und dessen Unterelemente werden in JBoss EAP 7 nicht mehr verwendet.

<use-session-passivation/>

Bislang wurde die Passivierung mithilfe dieses Attributs ermöglicht.

In der neuen Implementierung wird die Passivierung aktiviert, indem ein nicht negativer Wert für <max-active-sessions/> definiert wird.

<passivation-min-idle-time/>

Bislang mussten Sessions mindestens für eine bestimmte Zeitspanne aktiv sein, bevor sie für eine Passivierung in Frage kamen. Dadurch war es möglich, dass die Session-Erstellung fehlschlug, selbst wenn die Passivierung aktiviert war.

Die neue Implementierung unterstützt diese Logik nicht und vermeidet dadurch diese Denial of Service (DoS) Schwachstelle.

<passivation-max-idle-time/>

Bislang wurde eine Session passiviert, sobald Sie für eine bestimmte Zeitspanne inaktiv war.

Die neue Implementierung unterstützt nur eine reaktive Passivierung, keine aktive Passivierung. Sessions werden nur passiviert, wenn dies erforderlich ist, um <max-active-sessions/> einzuhalten.

<replication-config/>

In der neuen Implementierung gelten eine Reihe von Unterelementen nun als veraltet.

<replication-trigger/>

Previously, this element was used to determine when session replication was triggered. The new implementation replaces this configuration option with a single, robust strategy. For more information, see Immutable Session Attributes in the JBoss EAP Development Guide.

<use-jk/>

Bislang wurde die instance-id des Knotens, der die jeweilige Anfrage handhabte, der jsessionid angefügt (um dann von Lastverteilern wie mod_jk, mod_proxy_balancer und mod_cluster verwendet zu werden), abhängig von dem für <use-jk/> angegebenen Wert.

In der neuen Implementierung wird die instance-id, sofern definiert, immer der jsessionid angefügt.

<max-unreplicated-interval/>

Bislang diente diese Konfigurationsoption der Optimierung, um die Replikation eines Session-Timestamps zu verhindern, wenn kein Session-Attribut verändert wurde. Theoretisch war dies sinnvoll, praktisch verhinderte es jedoch keine RPCs, da der Session-Zugriff nach wie vor RPCs für die Cache-Transaktion erforderte, unabhängig davon, ob Session-Attribute verändert wurden oder nicht.

In der neuen Implementierung wird der Timestamp einer Session bei jeder Anfrage repliziert. Dies verhindert veraltete Session-Metadaten nach einem Failover.

<snapshot-mode/>

Bislang konnte man <snapshot-mode/> als INSTANT oder INTERVAL konfigurieren. Durch die asynchrone Replikation von Infinispan wird diese Konfigurationsoption jedoch hinfällig.

<snapshot-interval/>

Dies war nur relevant für <snapshot-mode>INTERVAL</snapshot-mode>. Da <snapshot-mode/> jedoch hinfällig ist, wurde diese Option ebenfalls obsolet.

<session-notification-policy/>

Bislang definierte der Wert dieses Attributs eine Richtlinie zum Auslösen von Session-Ereignissen.

In der neuen Implementierung ist dieses Verhalten spezifikationsabhängig und nicht konfigurierbar.

Diese neue Implementierung unterstützt zudem Write-Through Cache-Speicher sowie Cache-Speicher nur mit Passivierung. Üblicherweise wird ein Write-Through Cache-Speicher zusammen mit einem Invalidierungs-Cache eingesetzt. Die Web-Session-Clustering-Implementierung in JBoss EAP 6 funktionierte nicht einwandfrei zusammen mit einem Invalidierungs-Cache.

5.18.3. Änderungen am Stateful Session EJB Clustering

In JBoss EAP 6 war es erforderlich, das Clustering-Verhalten für Stateful Session Beans (SFSBs) auf einer der folgenden Arten zu aktivieren.

  • Sie konnten die org.jboss.ejb3.annotation.Clustered-Annotation in der Session-Bean hinzufügen.

    @Stateful
    @Clustered
    public class MyBean implements MySessionInt {
    
       public void myMethod() {
          //
       }
    }
  • Sie konnten das <clustered>-Element zur jboss-ejb3.xml-Datei hinzufügen.

    <c:clustering>
      <ejb-name>DDBasedClusteredSFSB</ejb-name>
      <c:clustered>true</c:clustered>
    </c:clustering>

In JBoss EAP 7 ist es nicht mehr erforderlich, das Clustering-Verhalten zu aktivieren. Wenn der Server unter Verwendung eines HA-Profils startet, wird der Zustand von SFSBs standardmäßig automatisch repliziert.

Sie können dieses Standardverhalten auf eine der folgenden Weisen deaktiveren.

  • Sie können das standardmäßige Verhalten für eine einzelne Stateful Session Bean mithilfe von @Stateful(passivationCapable=false) deaktivieren; dies ist neu in der EJB 3.2 Spezifikation.
  • Sie können dieses Verhalten global deaktivieren in der Konfiguration des ejb3-Subsystems in der Serverkonfiguration.
Anmerkung

Falls die @Clustered-Annotation nicht von der Applikation entfernt wird, so wird sie einfach ignoriert und hat keine Auswirkungen auf die Applikation.

5.18.4. Änderungen des Clustering-Services

In JBoss EAP 6 befanden sich die APIs für Clustering-Services in privaten Modulen und wurden nicht unterstützt.

JBoss EAP 7 führte eine öffentliche Clustering-Service-API für die Applikationen ein. Die neuen Services wurden konzipiert mit einem schlanken Design, sind einfach einzuspeisen, und erfordern keine externe Abhängigkeiten.

  • Die neue org.wildfly.clustering.group.Group-Schnittstelle bietet Zugang zum aktuellen Cluster-Status und ermöglicht das Lauschen auf Änderungen der Cluster-Mitgliedschaft.
  • Die neue org.wildfly.clustering.dispatcher.CommandDispatcher-Schnittstelle ermöglicht das Ausführen von Code im Cluster, entweder auf allen Knoten oder auf einer Untergruppe ausgewählter Knoten.

Diese Services ersetzen ähnliche APIs, die in vorherigen Releases verfügbar waren, nämlich HAPartition aus JBoss EAP 5 und GroupCommunicationService, GroupMembershipNotifier und GroupRpcDispatcher in JBoss EAP 6.

For more information, see Public API for Clustering Services in the JBoss EAP Development Guide.

5.18.5. Migrieren des Clustering-HA-Singletons

In JBoss EAP 6 gab es keine öffentliche API für den clusterweiten HA-Singleton-Service. Wenn Sie die privaten org.jboss.as.clustering.singleton.* Klassen verwendet haben, müssen Sie für die Migration Ihrer Applikationen zu JBoss EAP 7 Ihren Code ändern, um die neuen öffentlichen org.wildfly.clustering.singleton.* Pakete zu verwenden.

For more information about how to implement an HA singleton, see HA Singleton Service in the Development Guide for JBoss EAP.

Kapitel 6. Sonstige Änderungen

6.1. Änderungen bei der Lieferung von JBoss EAP Natives und Apache HTTP Server

JBoss EAP 7 Natives werden in dieser Release anders geliefert als früher. Einige werden jetzt mit dem neuen Produkt Red Hat JBoss Core Services geliefert, eine Auswahl zusätzlicher Software, die in vielen Red Hat JBoss Middleware-Produkten gebräuchlich sind. Das neue Produkt ermöglicht Ihnen eine schnellere und einheitlichere Verteilung von Updates. Das Produkt JBoss Core Services steht an einer anderen Stelle im Red Hat Kundenportal als Download zur Verfügung.

  • Die folgende Tabelle listet die Unterschiede in den Lieferungsmethoden zwischen den Versionen auf.

    PaketJBoss EAP 6JBoss EAP 7

    AIO Natives für Messaging

    Wird in einem separaten "Native Utilities" Download mit dem Produkt geliefert

    In der JBoss EAP Distribution inbegriffen. Zusätzlicher Download ist nicht erforderlich.

    Apache HTTP Server

    Wird in einem separaten "Apache HTTP Server" Download mit dem Produkt geliefert

    Wird mit dem neuen Produkt JBoss Core Services geliefert

    mod_cluster, mod_jk, isapi und nsapi Konnektoren

    Wird in einem separaten "Webserver Connector Natives" Download mit dem Produkt geliefert

    Wird mit dem neuen Produkt JBoss Core Services geliefert

    JSVC

    Wird in einem separaten "Native Utilities" Download mit dem Produkt geliefert

    Wird mit dem neuen Produkt JBoss Core Services geliefert

    OpenSSL

    Wird in einem separaten "Native Utilities" Download mit dem Produkt geliefert

    Dies wurde in JBoss EAP7 weggelassen

    tcnatives

    Wird in einem separaten "Native Components" Download mit dem Produkt geliefert

    Dies wurde in JBoss EAP7 weggelassen

  • Sie sollten sich zudem folgender Änderungen bewusst sein:

    • Die Unterstützung für mod_cluster and mod_jk Konnektoren, die mit Apache HTTP Server von Red Hat Enterprise Linux RPM-Channels verwendet werden, wurde eingestellt. Wenn Sie den Apache HTTP Server von Red Hat Enterprise Linux RPM-Channels aus ausführen und Lastverteilung für JBoss EAP 7 Server konfigurieren müssen, können Sie folgendermaßen vorgehen:

      • Verwenden Sie den Apache HTTP Server, der von JBoss Core Services bereitgestellt wird.
      • You can configure JBoss EAP 7 to act as a front-end load balancer. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.
      • You can deploy Apache HTTP Server on a machine that is supported and certified and then run the load balancer on that machine. For the list of supported configurations, see Overview of HTTP Connectors in the JBoss EAP 7 Configuration Guide.
    • Die Unterstützung für mod_cluster and mod_jk Konnektoren, die mit dem Apache HTTP Server von HP-UX Web Server Suites verwendet wurden, wurde eingestellt. Wenn Sie den Apache HTTP Server von HP-UX Web Server Suites aus verwenden und Lastverteilung für JBoss EAP 7 Server konfigurieren müssen, können Sie folgendermaßen vorgehen:

      • You can configure JBoss EAP 7 to act as a front-end load balancer. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.
      • You can deploy Apache HTTP Server on a machine that is supported and certified and then run the load balancer on that machine. For the list of supported configurations, see Overview of HTTP Connectors in the JBoss EAP Configuration Guide.
  • You can find more information about JBoss Core Services in the Apache HTTP Server Installation Guide.

6.2. Änderungen an Deployments auf Amazon EC2

A number of changes have been made to the Amazon Machine Images (AMI) in JBoss EAP 7. This section briefly summarizes some of those changes.

  • Die Art und Weise, wie geclusterte und nicht geclusterte JBoss EAP Instanzen und Domains in Amazon EC2 gestartet werden, hat sich grundlegend geändert.
  • JBoss EAP 6 verwendete das Feld User Data: zur JBoss EAP Konfiguration. Die AMI-Skipte, welche die Konfiguration im Feld User Data: analysierten und beim Instanzenstart automatisch die Server starteten, wurden aus JBoss EAP 7 entfernt.
  • Der Red Hat JBoss Operations Network Agent wurde in der vorherigen Version von JBoss EAP automatisch mit installiert. In JBoss EAP 7 müssen Sie diesen separat installieren.

For details on deploying JBoss EAP 7 on Amazon EC2, see Deploying Red Hat JBoss Enterprise Application Platform on Amazon EC2.

6.3. Änderungen an JBoss EAP Skripten

The add-user script behavior has changed in JBoss EAP 7 due to a change in password policy. JBoss EAP 6 had a strict password policy. As a result, the add-user script rejected weak passwords that did not satisfy the minimum requirements. In JBoss EAP 7, weak passwords are accepted and a warning is issued. For more information, see Setting Add-User Utility Password Restrictions in the JBoss EAP Configuration Guide.

6.4. Entfernung der OSGi-Unterstützung

Als JBoss EAP 6.0 GA zuerst veröffentlicht wurde, war JBoss OSGi – eine Implementierung der OSGi-Spezifikation – als Technologievorschau enthalten. Seit JBoss EAP 6.1.0 hat JBoss OSGi den Status einer Technologievorschau verloren und wird nicht mehr unterstützt.

In JBoss EAP 6.1.0 wurden die configadmin- und osgi-Erweiterungsmodule und Subsystemkonfigurationen für einen Standalone-Server in die separate Konfigurationsdatei EAP_HOME/standalone/configuration/standalone-osgi.xml verlegt. Da Sie diese nicht unterstützte Konfigurationsdatei nicht migrieren sollten, dürfte die Entfernung der JBoss OSGi Unterstützung keine Auswirkungen auf die Migration einer Standalone-Serverkonfiguration haben. Falls Sie andere Standalone-Konfigurationsdateien zum Konfigurieren von osgi oder configadmin verändert haben, müssen Sie diese Konfigurationen entfernen.

Für eine verwaltete Domain wurde die osgi-Erweiterung und Subsystemkonfiguration aus der Datei EAP_HOME/domain/configuration/domain.xml in der JBoss EAP 6.1.0 Release entfernt. Allerdings verbleibt das configadmin-Erweiterungsmodul und die Subsystemkonfiguration in der Datei EAP_HOME/domain/configuration/domain.xml. Diese Konfiguration wird in JBoss EAP 7 nicht mehr unterstützt und muss entfernt werden.

Kapitel 7. Migrieren von älteren JBoss EAP Releases

7.1. Migrieren von JBoss EAP 5 zu JBoss EAP 7

Dieses Handbuch konzentriert sich auf die notwendigen Änderungen, um JBoss EAP 6 Applikationen erfolgreich auf JBoss EAP 7 bereitzustellen und auszuführen. Falls Sie dagegen beabsichtigen, Ihre Applikationen direkt von JBoss EAP 5 zu JBoss EAP 7 zu migrieren, gibt es eine Reihe von Informationsquellen, die Ihnen bei der Planung und Durchführung der Migration helfen. Wir empfehlen Ihnen die folgende Herangehensweise.

  1. Werfen Sie einen Blick auf Zusammenfassung der Änderungen an jeder Release in diesem Handbuch für eine Zusammenfassung der Änderungen an jeder JBoss EAP Release.
  2. Lesen Sie das JBoss EAP 6 Migrationshandbuch sowie dieses Handbuch, um sich mit den Inhalten beider Handbücher vertraut zu machen.
  3. Verwenden Sie die JBoss EAP 5 Component Upgrade Reference als Referenz für Migrationsinformationen über bestimmte Komponenten und Features.
  4. Das regelbasierte Windup-Migrationstool fügt weiterhin Regeln hinzu, um Ihnen bei der direkten Migration von JBoss EAP 5 zu JBoss EAP 7 zu helfen. Sie können dieses Tool verwenden, um Ihre Applikation zu analysieren und um detaillierte Berichte über die Änderungen zu generieren, die für die Migration zu JBoss EAP 7 erforderlich sind. Weitere Informationen finden Sie unter Verwenden von Windup zur Analyse von Applikationen zur Migration.
  5. Die Kundenportal Knowledgebase enthält derzeit Artikel und Lösungen, die bei der Migration von JBoss EAP 5 zu JBoss EAP 6 helfen. Im Laufe der Zeit sollen weitere Inhalte hinzugefügt werden, welche die Migration von JBoss EAP 5 zu JBoss EAP 7 behandeln.

7.2. Zusammenfassung der Änderungen an jeder Release

Bevor Sie Ihre Migration planen, sollten Sie sich über die Änderungen im Klaren sein, die an JBoss EAP 6 und JBoss EAP 7 vorgenommen wurden.

Das JBoss EAP 6 Migrationshandbuch behandelt Änderungen, die zwischen JBoss EAP 5 und JBoss EAP 6 vorgenommen wurden. Nachfolgend sehen Sie eine verkürzte Liste der bedeutsamsten Änderungen in JBoss EAP 6.

  • Neue Architektur basierend auf dem Modular Service Container implementiert
  • Zertifizierte Implementierung der Java Enterprise Edition 6 Spezifikation
  • Domain-Management, neue Deployment-Konfiguration sowie neue Verzeichnisstruktur und Skripte eingeführt
  • Auf neue portierbare JNDI-Namespaces standardisiert

Siehe Was ist neu und anders bei der JBoss EAP 6? im JBoss EAP 6 Migrationshandbuch für eine detaillierte Liste der Änderungen an dieser Release.

JBoss EAP 7 basiert auf derselben modularen Struktur wie JBoss EAP 6 und verwendet dieselben Grundlagen für Domain-Management, Deployment-Konfiguration, Verzeichnisstruktur und Skripte. Es verwendet auch dieselben standardisierten JNDI-Namespaces. Allerdings führt JBoss EAP 7 die folgenden Änderungen ein.

  • Unterstützung für die Java Enterprise Edition 7 Spezifikation hinzugefügt
  • Webserver durch Undertow ersetzt
  • JacORB IIOP-Implementierung durch eine Downstream-Branch des OpenJDK ORB ersetzt
  • Enthält Apache ActiveMQ Artemis als neuen Messaging-Provider
  • Entfernt die Subsysteme cmp, jaxr und threads
  • Entfernt Unterstützung für EJB Entity Beans

Eine vollständige Liste der Änderungen finden Sie unter Was ist neu JBoss EAP 7?

7.3. Lesen der Migrationshandbücher

Lesen Sie das gesamte Migrationshandbuch für jede Release, um über neue oder veraltete Features im Bilde zu sein und um die Serverkonfigurationen und Änderungen an Applikationen zu erfahren, die notwendig sind, um vorhandene Applikationen erfolgreich auf dieser Release auszuführen.

Da sich die zugrunde liegende Architektur von JBoss EAP 6 auf JBoss EAP 7 nicht geändert hat, haben viele der im JBoss EAP 6 Migrationshandbuch dokumentierten Änderungen noch Gültigkeit. Beispielsweise beziehen sich die in Von den meisten Applikationen benötigte Änderungen dokumentierten Änderungen auf die Neuerungen der zugrunde liegenden Architektur in JBoss EAP 6, und treffen somit ebenfalls auf diese Release zu. Die Änderungen am neuen, modularen Klassenladersystem sind beträchtlich und wirken sich auf die Paketierung und die Abhängigkeiten von fast allen JBoss EAP 5 Applikationen aus. Viele der unter Von Ihrer Applikationsarchitektur und -komponenten abhängige Änderungen aufgeführten Änderungen gelten ebenfalls weiterhin. Da JBoss EAP 7 jedoch den Webserver, ORB und Messaging-Provider ersetzt hat, die cmp, threads und jaxr Subsysteme entfernt sowie Unterstützung für EJB Entity Beans gestoppt hat, müssen Sie dieses Handbuch für jegliche Änderungen hinsichtlich dieser Komponenten zu Rate ziehen. Achten Sie besonders auf die Änderungen der Serverkonfiguration und die Änderungen bei Applikationsmigration, die in diesem Handbuch beschrieben werden, bevor Sie beginnen.

7.4. Liste der JBoss EAP 5 Komponenten-Upgrades

In der folgenden Tabelle finden Sie Informationen über das Migrieren von bestimmten Features oder Komponenten von JBoss EAP 5 zu JBoss EAP 7.

JBoss EAP 5
Feature oder Komponente
Zusammenfassung der Änderungen und
Links zu Migrationsinformationen

Packen der Applikation und Klassenladen

In JBoss EAP 6 wurde die bisherige hierarchische Klassenladestruktur ersetzt durch eine modulare Architektur basierend auf JBoss Modules. Das Packen von Applikationen hat sich ebenfalls geändert aufgrund der neuen modularen Klassenladestruktur. Diese Architektur wird auch in JBoss EAP 7 verwendet. Weitere Informationen über die neue modulare Architektur finden Sie im folgenden Kapitel im JBoss EAP 7 Development Guide.

Informationen über das Aktualisieren und Neupacken von Applikationen für die modulare Architektur finden Sie im folgenden Abschnitt im JBoss EAP 6 Migrationshandbuch.

Applikations-Konfigurationsdateien

Due to the changes in JBoss EAP 6 to use modular class loading, you might need to create or modify one or more application configuration files to add dependencies or to prevent automatic dependencies from loading. This has not changed in JBoss EAP 7. For details, see the following section in the JBoss EAP 6 Migration Guide.

Caching und Infinispan

JBoss Cache wurde ersetzt durch Infinispan zum internen Gebrauch durch den Server in JBoss EAP 6. In den folgenden Abschnitten im JBoss EAP 6 Migrationshandbuch finden Sie Informationen darüber, wie JBoss Cache im Applikationscode ersetzt werden muss.

Die Änderungen an der Infinispan-Caching-Strategie und -Konfiguration für JBoss EAP 7 werden im folgenden Abschnitt dieses Handbuchs erläutert.

Datenquellen und Ressourcenadapter

JBoss EAP 6 konsolidierte die Konfiguration von Datenquellen und Ressourcenadaptern in hauptsächlich eine Datei, und dies ist nach wie vor der Fall in JBoss EAP 7. Im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuch finden Sie weitere Informationen.

Darüber hinaus wird die Fähigkeit zur Konfiguration eines generischen JMS-Ressourcenadapters zur Verbindung mit einem JMS-Provider in JBoss EAP 7 nicht mehr unterstützt. Siehe folgenden Abschnitt in diesem Handbuch.

Verzeichnisstruktur, Skripte und Deployment-Konfiguration

In JBoss EAP 6 haben sich Verzeichnisstruktur, Skripte und Deployment-Konfiguration geändert. Diese Änderungen gelten auch weiterhin in JBoss EAP 7. Weitere Informationen finden Sie im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

EJB

Die Java EE 7 Spezifikation machte EJB 2.x und frühere Features optional, weshalb wir dringend empfehlen, Ihren Applikationscode zur Verwendung der EJB 3.x Spezifikation und JPA umzuschreiben. Informationen über veraltete Features und Änderungen, die zum Ausführen von EJB 2.x notwendig sind, finden Sie im folgenden Abschnitt im JBoss EAP 6 Migrationshandbuch.

In JBoss EAP 6 wird der Stateful EJB Cache und die Größe des Stateless Session Bean-Pools nun im ejb3-Subsystem der Serverkonfigurationsdatei konfiguriert. Der jboss-ejb3.xml-Deployment-Deskriptor ersetzt die jboss.xml-Deployment-Deskriptor-Datei. Weitere Informationen über diese Änderungen finden Sie im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

Der standardmäßige Remote-Connector und Port wurde in JBoss EAP 7 geändert. Weitere Informationen dazu und über Serverkonfigurationsänderungen finden Sie in den folgenden Abschnitten dieses Handbuchs.

EJB Entity Beans werden in JBoss EAP 7 nicht unterstützt. Informationen über das Migrieren von Entity Beans zu JPA finden Sie in dem folgenden Abschnitt dieses Handbuchs.

Hibernate und JPA

In JBoss EAP 6 wurde Hibernate von Version 3 auf Version 4 aktualisiert. Diese Version von JBoss EAP implementierte zudem die JPA 2.0 Spezifikation und an JPA-Persistenzeigenschaften wurden Änderungen vorgenommen. Informationen darüber, wie Sie Ihre Applikationen an diese Änderungen anpassen, finden Sie im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

JBoss EAP 7 implementiert JPA 2.1 und enthält Hibernate 5. Es aktualisiert Hibernate Search von Version 4.6.x auf Version 5.5.x. Andere Änderungen sind u.a. die Entfernung der Unterstützung für EJB Entity Beans und zusätzliche Aktualisierungen an JPA-Persistenzeigenschaften. Informationen darüber, wie sich diese Änderungen auf Ihre Applikationen auswirken, finden Sie in den folgenden Abschnitten in diesem Handbuch.

JAX-RS und RESTEasy

JBoss EAP 6 integrierte RESTEasy 2, was automatisch RESTEasy konfiguriert und Änderungen an Ihrer Applikationskonfiguration erforderlich macht. In dem folgenden Abschnitt im JBoss EAP 6 Migrationshandbuch finden Sie weitere Informationen.

JBoss EAP 7 enthält RESTEasy 3, und weitere Klassen gelten nun als veraltet. Die Jackson-Version hat sich von Version 1.9.9 auf Version 2.6.3 oder höher geändert. Einzelheiten über diese Änderungen finden Sie im folgenden Abschnitt dieses Handbuchs.

JBoss AOP

JBoss AOP (Aspect Oriented Programming) wurde aus JBoss EAP 6 entfernt. Informationen darüber, wie Applikationen refaktoriert werden müssen, die JBoss AOP verwenden, finden Sie im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

JGroups und Clustering

Die Art und Weise, wie Clustering aktiviert und Bind-Adressen angegeben werden, hat sich JBoss EAP 6 geändert. Im folgenden Abschnitt im JBoss EAP 6 Migrationshandbuch finden Sie weitere Informationen.

In JBoss EAP 7 verwendet JGroups nun standardmäßig eine private Netzwerkschnittstelle anstelle einer öffentlichen Netzwerkschnittstelle, und es führt <channel>-Elemente im jgroups-Subsystem ein. JBoss EAP 7 enthält zudem die Undertow mod_cluster-Implementierung, und es führt eine neue API zum Erstellen von Singleton-Diensten sowie andere Clustering-Features ein. Diese Änderungen werden in den folgenden Abschnitten dieses Handbuchs erläutert.

JNDI

JBoss EAP 6 implementierte einen neuen, standardisierten, globalen JNDI-Namespace sowie eine Reihe zugehöriger Namespaces, die den verschiedenen Bereichen einer Java EE Applikation zugewiesen sind. In dem folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs finden Sie Informationen über die erforderlichen Applikationsänderungen, um die neuen JNDI-Namespace-Regeln zu verwenden.

JSF

JBoss EAP 6 enthielt JSF 2.0 und ermöglichte es Ihnen, Ihre Applikation zur Verwendung einer älteren Version zu konfigurieren. Dies ist in JBoss EAP 7 – was JSF 2.2 enthält – nicht mehr möglich. Der folgende Abschnitt in diesem Handbuch liefert weitere Informationen.

Protokollierung

JBoss EAP 6 introduced a new JBoss Logging framework that is still used in JBoss EAP 7. Applications that use third-party logging frameworks might be impacted by the modular class loading changes. Review the following section in the JBoss EAP 6 Migration Guide for information about these changes.

In JBoss EAP 7 gelten Annotationen im org.jboss.logging-Paket nun als veraltet, was Auswirkungen auf den Quellcode und auf Maven GAVs (groupId:artifactId:version) hat. Die Präfixe für alle Protokollnachrichten wurden ebenfalls geändert. Weitere Informationen über diese Änderungen finden Sie in den folgenden Abschnitten in diesem Handbuch.

Messaging und JMS

In JBoss EAP 6 ersetzte HornetQ das JBoss Messaging als standardmäßige JMS-Implementierung. In JBoss EAP 7 ersetzt ActiveMQ Artemis nun HornetQ als integrierten Messaging-Provider.

Der beste Ausgangspunkt zur Migration Ihrer Messaging-Konfiguration ist die JBoss EAP 7 Standard-Serverkonfiguration, auf die Sie anhand des folgenden Leitfadens Ihre aktuellen Messaging-Konfigurationsänderungen anwenden sollten.

Falls Sie die erforderlichen Änderungen für den Wechsel von JBoss Messaging nach HornetQ besser verstehen möchten, werfen Sie einen Blick auf den folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

Lesen Sie anschließend die folgenden Informationen über die Migration der HornetQ-Konfiguration und der zugehörigen Messaging-Daten in diesem Handbuch.

ORB

In JBoss EAP 6 wurde die JacORB-Konfiguration aus der EAP_HOME/server/production/conf/jacorb.properties-Datei in die Server-Konfigurationsdatei verlegt. JBoss EAP 7 ersetzte dann die JacORB IIOP-Implementierung durch eine Downstream-Branch des OpenJDK ORB.

Der beste Ausgangspunkt zur Migration Ihrer ORB-Konfiguration ist die JBoss EAP 7 Standard-Serverkonfiguration, auf die Sie anhand des JBoss EAP 7 Configuration Guide Ihre aktuellen ORB-Konfigurationsänderungen anwenden sollten.

Remote-Aufruf

Eine neue EJB-Client-API wurde in JBoss EAP 6 eingeführt für Remote-Aufrufe; falls Sie es allerdings vorzogen, Ihren Applikationscode nicht zur Verwendung der neuen API umzuschreiben, konnten Sie Ihren vorhandenen Code ändern, um die ejb:BEAN_REFERENCE für Remote-Zugriff auf EJBs zu verwenden. Im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs erhalten Sie weitere Informationen.

In JBoss EAP 7 hat sich der Standard-Connector und der Standard-Remote-Verbindungsport geändert. Weitere Informationen finden Sie in den folgenden Abschnitten in diesem Handbuch.

Seam 2.x

Obwohl die offizielle Unterstützung für Seam 2.2 Applikationen in JBoss EAP 6 aufgegeben wurde, war es nach wie vor möglich, Abhängigkeiten für JSF 1.2 und Hibernate 3 zu konfigurieren, damit Seam 2.2 Applikationen auf dieser Release ausgeführt werden konnten. JBoss EAP 7 enthält nun JSF 2.2 und Hibernate 5; es unterstützt weder Seam 2.2 noch Seam 2.3, da das Red Hat JBoss Web Framework Kit das Ende seines Produktlebenszyklus erreicht hat. Wir empfehlen, Ihre Seam-Komponenten umzuschreiben zur Verwendung von Weld CDI Beans.

Sicherheit

Sicherheitsaktualisierungen in JBoss EAP 6 umfassten Änderungen an den Namen von Sicherheitsdomains und Änderungen bei der Konfiguration der Sicherheit für einfache Authentifizierung. Die Konfiguration des LDAP-Sicherheitsbereichs wurde in die Server-Konfigurationsdatei verlegt. In den folgenden Abschnitten des JBoss EAP 6 Migrationshandbuchs finden Sie weitere Informationen.

Aktualisierungen, die Auswirkungen auf die Sicherheit in JBoss EAP 7 haben, sind unter anderem Server-Konfigurationsänderungen und Applikationsänderungen. Informationen finden Sie in den folgenden Abschnitten dieses Handbuchs.

Spring-Applikationen

Spring 4.2.x ist die früheste, stabile Spring-Version, die von JBoss EAP 7 unterstützt wird. In den folgenden Abschnitten dieses Handbuchs finden Sie Informationen über Apache CXF Spring Webservices und Spring RESTEasy Integrationsänderungen.

Transaktionen

JBoss EAP 6 konsolidierte die Transaktionskonfiguration und verlegte sie in die Server-Konfigurationsdatei. Weitere Aktualisierungen betrafen Änderungen an den JTA-Knotenbezeichner-Einstellungen und die Art und Weise, wie JTS aktiviert wird. Details hierzu finden Sie im folgenden Abschnitt des JBoss EAP 6 Migrationshandbuchs.

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. Weitere Informationen finden Sie in den folgenden Abschnitten in diesem Handbuch.

Valves

Undertow ersetzte JBoss Web in JBoss EAP 7 und Valves werden nicht mehr unterstützt. Siehe die folgenden Abschnitte in diesem Handbuch.

Web-Dienste

JBoss EAP 6 enthielt JBossWS 4. Informationen über die erforderlichen Änderungen für die aktualisierte Version finden Sie im folgenden Abschnitt im JBoss EAP 6 Migrationshandbuch.

JBoss EAP 7 führte JBossWS 5 ein. In dem folgenden Abschnitt in diesem Handbuch sind die erforderlichen Aktualisierungen aufgeführt.

Anhang A. Referenzmaterial

A.1. Warnungen der migration-Operation für das JacORB-Subsystem

The migrate operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate or describe-migration operation for the jacorb subsystem.

Anmerkung

Falls Sie »Could not migrate« oder »Can not migrate« Einträge in der Ausgabe der migrate-Operation entdecken, bedeutet hin, dass die Migration der Serverkonfiguration erfolgreich abgeschlossen wurde, jedoch nicht alle Elemente und Attribute automatisch migriert werden konnten. Sie müssen den Empfehlungen der »migration-warnings« Empfehlungen folgen, um diese Konfigurationen anzupassen.

WarnmeldungBedeutung/Lösung

The iiop migration can be performed when the server is in admin-only mode (Die iiop-Migration kann ausgeführt werden, wenn der Server im admin-only-Modus läuft)

Die migrate-Operation erfordert, dass der Server im Modus admin-only gestartet wird. Sie erreichen dies, indem Sie den Parameter --admin-only zum Server-Startbefehl hinzufügen:

$ EAP_HOME/bin/standalone.sh --admin-only

Properties X cannot be emulated using OpenJDK ORB and are not supported (Eigenschaften X können nicht mithilfe von OpenJDK ORB emuliert werden und werden nicht unterstützt)

Die Konfiguration der angegebenen Eigenschaft wird nicht unterstützt und ist nicht in der neuen iiop-openjdk Subsystemkonfiguration enthalten. Das Verhalten, das von dieser Eigenschaft in der vorherigen Release von JBoss EAP gezeigt wurde, wird nicht migriert und der Administrator muss sich vergewissern, ob das neue iiop-openjdk-Subsystem in JBoss EAP 7 dazu in der Lage ist, ohne dieses Verhalten erwartungsgemäß zu funktionieren.

Nicht unterstützte Eigenschaften sind unter anderem: cache-poa-names, cache-typecodes, chunk-custom-rmi-valuetypes, client-timeout, comet, indirection-encoding-disable, iona, lax-boolean-encoding, max-managed-buf-size, max-server-connections, max-threads, outbuf-cache-timeout, outbuf-size, queue-max, queue-min, poa-monitoring, print-version, retries, retry-interval, queue-wait, server-timeout, strict-check-on-tc-creation, use-bom, use-imr.

The properties X use expressions. Configuration properties that are used to resolve those expressions should be transformed manually to the new iiop-openjdk subsystem format (Die Eigenschaften X verwenden Ausdrücke. Konfigurationseigenschaften, die zum Auslösen dieser Ausdrücke verwendet werden, sollten manuell in das neue iiop-openjdk-Subsystemformat umgewandelt werden)

Eigenschaften, die Ausdrücke verwenden, müssen manuell vom Administrator konfiguriert werden.

Beispielsweise definierte das jacorb-Subsystem in JBoss EAP 6 eine giop-minor-version-Eigenschaft. Das iiop-openjdk-Subsystem in JBoss EAP 7 definiert eine giop-version-Eigenschaft. Angenommen, dass Nebenversion-Attribut des jacorb-Subsystems ist auf ${iiop-giop-minor-version} eingestellt und die Systemeigenschaft ist in der standalone.conf-Datei als -Diiop-giop-minor-version=1 konfiguriert. Nach der migrate-Operation muss der Administrator den Wert der Systemeigenschaft auf 1.1 setzen, um sicherzustellen, dass das neue Subsystem richtig konfiguriert ist.

Can not migrate: the new iiop-openjdk subsystem is already defined (Kann nicht migrieren: das neue iiop-openjdk-Subsystem ist bereits definiert)

Diese Meldung ist selbsterklärend.

A.2. Warnungen der migration-Operation für das Messaging-Subsystem

The migrate operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate or describe-migration operation for the messaging subsystem.

Anmerkung

Falls Sie »Could not migrate« oder »Can not migrate« Einträge in der Ausgabe der migrate-Operation entdecken, bedeutet hin, dass die Migration der Serverkonfiguration erfolgreich abgeschlossen wurde, jedoch nicht alle Elemente und Attribute automatisch migriert werden konnten. Sie müssen den Empfehlungen der »migration-warnings« Empfehlungen folgen, um diese Konfigurationen anzupassen.

WarnmeldungBedeutung/Lösung

The migrate operation can not be performed: the server must be in admin-only mode (Die migrate-Operation kann nicht ausgeführt werden: der Server muss im admin-only-Modus laufen)

Die migrate-Operation erfordert, dass der Server im Modus admin-only gestartet wird. Sie erreichen dies, indem Sie den Parameter --admin-only zum Server-Startbefehl hinzufügen:

$ EAP_HOME/bin/standalone.sh --admin-only

Can not migrate attribute local-bind-address from resource X. Use instead the socket-binding attribute to configure this broadcast-group. (Attribut local-bind-address von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese broadcast-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute local-bind-port from resource X. Use instead the socket-binding attribute to configure this broadcast-group. (Attribut local-bind-port von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese broadcast-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute group-address from resource X. Use instead the socket-binding attribute to configure this broadcast-group. (Attribut group-address von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese broadcast-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute group-port from resource X. Use instead the socket-binding attribute to configure this broadcast-group. (Attribut group-port von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese broadcast-group zu konfigurieren.)

Die Ressource broadcast-group akzeptiert nicht mehr die Attribute local-bind-address, local-bind-port, group-address oder group-port. Sie akzeptiert ausschließlich ein socket-binding-Attribut. Die Warnung weist darauf hin, dass die Ressource X ein nicht unterstütztes Attribut enthält. Sie müssen manuell das socket-binding-Attribut auf der Ressource definieren und sicherstellen, dass es auf eine definierte socket-binding-Ressource verweist.

Klassen, die X bereitstellen, werden während der Migration verworfen. Um sie im neuen messaging-activemq-Subsystem zu verwenden, müssen Sie den Artemis-basierten Interceptor erweitern.

Die Unterstützung von Messaging-Interzeptoren hat sich in JBoss EAP 7 deutlich verändert. Jegliche Interzeptoren, die in der vorherigen Version des Subsystems konfiguriert wurden, werden während der Migration verworfen. Siehe Migrieren von Messaging-Interzeptoren für weitere Informationen.

Can not migrate the HA configuration of X. Its shared-store and backup attributes holds expressions and it is not possible to determine unambiguously how to create the corresponding ha-policy for the messaging-activemq’s server. (Die HA-Konfiguration von X kann nicht migriert werden. Deren Attribute shared-store und backup enthalten Ausdrücke, und es kann nicht eindeutig festgestellt werden, wie die entsprechende ha-policy für den messaging-activemq-Server erstellt werden soll.)

Dies bedeutet, dass die Attribute shared-store oder backup von hornetq-server X einen Ausdruck enthielten, wie z.B. ${xxx}, und die Migrationsoperation war nicht dazu in der Lage, diesen Ausdruck eindeutig aufzulösen. Der Wert wird verworfen und die ha-policy für messaging-activemq muss manuell aktualisiert werden.

Can not migrate attribute local-bind-address from resource X. Use instead the socket-binding attribute to configure this discovery-group. (Attribut local-bind-address von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese discovery-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute local-bind-port from resource X. Use instead the socket-binding attribute to configure this discovery-group. (Attribut local-bind-port von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese discovery-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute group-address from resource X. Use instead the socket-binding attribute to configure this discovery-group. (Attribut group-address von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese discovery-group zu konfigurieren.)

Diese Meldung ist selbsterklärend und nennt die Lösung.

Can not migrate attribute group-port from resource X. Use instead the socket-binding attribute to configure this discovery-group. (Attribut group-port von Ressource X kann nicht migriert werden. Verwenden Sie stattdessen das socket-binding-Attribut, um diese discovery-group zu konfigurieren.)

Die Ressource discovery-group akzeptiert nicht mehr die Attribute local-bind-address, local-bind-port, group-address oder group-port. Sie akzeptiert ausschließlich ein socket-binding-Attribut. Die Warnung weist darauf hin, dass die Ressource X ein nicht unterstütztes Attribut enthält. Sie müssen manuell das socket-binding-Attribut auf der Ressource definieren und sicherstellen, dass es auf eine definierte socket-binding-Ressource verweist.

Can not create a legacy-connection-factory based on connection-factory X. It uses a HornetQ in-vm connector that is not compatible with Artemis in-vm connector. (Eine legacy-connection-factory basierend auf connection-factory X kann nicht erstellt werden. Sie verwendet einen HornetQ in-vm Connector, der nicht kompatibel ist mit dem Artemis in-vm Connector)

Die veralteten HornetQ Remote connection-factory-Ressourcen werden migriert zu legacy-connection-factory-Ressourcen, um JBoss EAP 6 Clients die Verbindung mit JBoss EAP 7 zu ermöglichen. Allerdings werden legacy-connection-factory-Ressourcen nur erstellt, wenn die connection-factory Remote-Connectors verwendet. Jegliche connection-factory, die in-vm verwendet, wird nicht migriert, da in-vm-Clients auf JBoss EAP 7 basieren, nicht auf JBoss EAP 6. Dieses Warnung weist darauf hin, dass die in-vm connection-factory nicht migriert wurde.

Can not migrate attribute X from resource Y. The attribute uses an expression that can be resolved differently depending on system properties. After migration, this attribute must be added back with an actual value instead of the expression. (Attribut X von Ressource Y kann nicht migriert werden. Das Attribut verwendet einen Ausdruck, der abhängig von den Systemeigenschaften unterschiedlich aufgelöst werden kann. Nach der Migration muss dieses Attribut manuell mit dem tatsächlichen Wert anstelle des Ausdrucks wieder hinzugefügt werden.)

Diese Warnung erscheint, wenn die Migration das Attribut X während des Migrationsvorgangs nicht in einen konkreten Wert auflösen kann. Der Wert wird verworfen und das Attribut muss manuell migriert werden. Dies tritt in den folgenden Situationen auf:

  • cluster-connection forward-when-no-consumers:

    Diese boolesche Variable wurde ersetzt durch das message-load-balancing-type-Attribut, bei dem es sich um eine Enumeration mit den möglichen Werten OFF, STRICT oder ON_DEMAND handelt.

  • Für broadcast-group und discovery-group die Attribute jgroups-stack und jgroups-channel

    Sie referenzieren andere Ressourcen und JBoss EAP 7 akzeptiert diese Ausdrücke nicht mehr.

Can not migrate attribute X from resource Y. This attribute is not supported by the new messaging-activemq subsystem. (Attribut X von Ressource Y kann nicht migriert werden. Dieses Attribut wird von dem neuen messaging-activemq-Subsystem nicht unterstützt.)

Einige Attribute werden im neuen messaging-activemq-Subsystem nicht mehr unterstützt und werden einfach verworfen:

  • failback-delay-Attribut von hornetq-server
  • use-nio-Attribut von http-connector
  • use-nio-Attribut von http-acceptor
  • use-nio-Attribut von remote-connector
  • use-nio-Attribut von remote-acceptor

Can not migrate attribute failback-delay from resource X. Artemis detects failback deterministically and it no longer requires to specify a delay for failback to occur. (Attribut failback-delay von Ressource X kann nicht migriert werden. Artemis erkennt Failback deterministisch und benötigt keine festgelegte Wartezeit mehr zum Auslösen eines Failbacks.)

Diese Meldung ist selbsterklärend.

Replace the Deprecated broadcast-group or discovery-group Attributes (Ersetzen Sie die veralteten Attribute »broadcast-group« oder »discovery-group«)

Wenn Sie angewiesen werden, die veralteten Attribute broadcast-group oder discovery-group durch das socket-binding-Attribut zu ersetzen, können Sie das neue Attribut mithilfe der Management-CLI hinzufügen.

Für dieses Beispiel nehmen wir an, dass Sie einen Standalone-Server migrieren, der die folgende discovery-group-Konfiguration im messaging-Subsystem enthält.

<discovery-groups>
    <discovery-group name="my-discovery-group">
        <group-address>224.0.1.105</group-address>
        <group-port>56789</group-port>
    </discovery-group>
</discovery-groups>

Wenn Sie die migrate-Operation für das messaging-Subsystem ausführen, sehen Sie die folgende Ausgabe und Warnungen:

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

Die migrate-Operation erstellt eine discovery-group namens »my-discovery-group« im neuen messaging-activemq-Subsystem, das nun wie folgt konfiguriert ist.

<discovery-group name="my-discovery-group"/>

Anschließend müssen Sie den folgenden Management-CLI-Befehl ausführen, um ein socket-binding-Element in der Server-Konfigurationsdatei namens »my-discovery-group-socket-binding« zu erstellen.

/socket-binding-group=standard-sockets/socket-binding=my-discovery-group-socket-binding:add(multicast-address=224.0.1.105, multicast-port=56789)

Fügen Sie als Nächstes das neu erstellte socket-binding zur discovery-group namens »my-discovery-group« im messaging-activemq-Subsystem in der Server-Konfigurationsdatei hinzu. Verwenden Sie dazu den folgenden Management-CLI-Befehl:

/subsystem=messaging-activemq/server=default/discovery-group=my-discovery-group:write-attribute(name=socket-binding,value=my-discovery-group-socket-binding)

Diese Befehle erstellen das folgende XML in der Server-Konfigurationsdatei.

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
    <server name="default">
        ...
        <discovery-group name="my-discovery-group" socket-binding="my-discovery-group-socket-binding"/>
        ...
    </server>
</subsystem>
...
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    ...
    <socket-binding name="my-discovery-group-socket-binding" multicast-address="224.0.1.105" multicast-port="56789"/>
    ...
</socket-binding-group>

A.3. Web Subsystem Migration Operation Warnings

The migrate operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate or describe-migration operation for the web subsystem.

Anmerkung

Falls Sie »Could not migrate« oder »Can not migrate« Einträge in der Ausgabe der migrate-Operation entdecken, bedeutet hin, dass die Migration der Serverkonfiguration erfolgreich abgeschlossen wurde, jedoch nicht alle Elemente und Attribute automatisch migriert werden konnten. Sie müssen den Empfehlungen der »migration-warnings« Empfehlungen folgen, um diese Konfigurationen anzupassen.

WarnmeldungBedeutung/Lösung

Migrate operation only allowed in admin only mode (Migrations-Operation nur im »admin-only«-Modus erlaubt)

Die migrate-Operation erfordert, dass der Server im Modus admin-only gestartet wird. Sie erreichen dies, indem Sie den Parameter --admin-only zum Server-Startbefehl hinzufügen:

$ EAP_HOME/bin/standalone.sh --admin-only

Could not migrate resource X (Ressource X konnte nicht migriert werden)

Das Verhalten, das diese Ressource in der vorherigen Release von JBoss EAP zeigte, wurde nicht migriert. Der Administrator muss überprüfen, ob das neue undertow-Subsystem in JBoss EAP 7 dazu in der Lage ist, ohne dieses Verhalten zu funktionieren, oder ob dieses Verhalten manuell migriert werden muss.

Could not migrate attribute X from resource Y. (Attribut X von Ressource Y konnte nicht migriert werden.)

Das Verhalten, das dieses Ressourcenattribut in der vorherigen Release von JBoss EAP zeigte, wurde nicht migriert. Der Administrator muss überprüfen, ob das neue undertow-Subsystem in JBoss EAP 7 dazu in der Lage ist, ohne dieses Verhalten zu funktionieren, oder ob dieses Verhalten manuell migriert werden muss.

See Web Subsystem Migration Operation Attribute Warnings for the list of attributes that are not migrated.

Could not migrate SSL connector as no SSL config is defined (SSL-Connector konnte nicht migriert werden, da keine SSL-Konfiguration definiert ist)

Diese Meldung ist selbsterklärend.

Could not migrate verify-client attribute X to the Undertow equivalent (verify-client-Attribut X konnte nicht zum Undertow-Äquivalent migriert werden)

Diese Meldung ist selbsterklärend.

Could not migrate verify-client expression X (verify-client Ausdruck X konnte nicht migriert werden)

Diese Meldung ist selbsterklärend.

Could not migrate valve X (Valve X konnte nicht migriert werden)

Das Verhalten, das diese Valve in der vorherigen Release von JBoss EAP zeigte, wurde nicht migriert. Der Administrator muss überprüfen, ob das neue undertow-Subsystem in JBoss EAP 7 dazu in der Lage ist, ohne dieses Verhalten zu funktionieren, oder ob dieses Verhalten manuell migriert werden muss.

This warning can occur for the following valves:

  • org.apache.catalina.valves.RemoteAddrValve

    Es muss mindestens einen erlaubten oder verweigerten Wert haben.

  • org.apache.catalina.valves.RemoteHostValve

    Es muss mindestens einen erlaubten oder verweigerten Wert haben.

  • org.apache.catalina.authenticator.BasicAuthenticator
  • org.apache.catalina.authenticator.DigestAuthenticator
  • org.apache.catalina.authenticator.FormAuthenticator
  • org.apache.catalina.authenticator.SSLAuthenticator
  • org.apache.catalina.authenticator.SpnegoAuthenticator
  • Angepasste Valves

Could not migrate attribute X from valve Y. (Attribut X von Valve Y konnte nicht migriert werden.)

The behavior exhibited by this valve attribute in the previous release of JBoss EAP was not migrated. The administrator must verify if the new undertow subsystem in JBoss EAP 7 is able to operate correctly without that behavior or whether the behavior must be migrated manually. This warning can occur for the following valve attributes:

  • org.apache.catalina.valves.AccessLogValve

    • resolveHosts
    • fileDateFormat
    • renameOnRotate
    • encoding
    • locale
    • requestAttributesEnabled
    • buffered
  • org.apache.catalina.valves.ExtendedAccessLogValve

    • resolveHosts
    • fileDateFormat
    • renameOnRotate
    • encoding
    • locale
    • requestAttributesEnabled
    • buffered
  • org.apache.catalina.valves.RemoteIpValve

    • httpServerPort
    • httpsServerPort
    • remoteIpHeader

      Falls definiert, aber nicht auf »x-forwarded-for« eingestellt

    • protocolHeader

      Falls definiert, aber nicht auf »x-forwarded-proto« eingestellt

Web Subsystem Migration Operation Attribute Warnings

The migrate operation is not able to process all JBoss Web attributes. See the following reference tables for information about how to migrate the unprocessed attributes manually.

Web SSL Connector Attributes

The following attributes were used in JBoss EAP 6 to configure the SSL connector. OpenSSL native libraries are not supported in JBoss EAP 7 so there are no equivalent settings.

AttributeBeschreibungUndertow Equivalent

ca-revocation-url

The file or URL that contains the revocation list.

No equivalent in Undertow.

certificate-file

When using OpenSSL encryption, the path to the file containing the server certificate.

No equivalent in Undertow.

ssl-protocol

The SSL protocol string.

No equivalent in Undertow.

verify-depth

The maximum number of intermediate certificate issuers checked before deciding that the clients do not have a valid certificate.

No equivalent in Undertow.

Web Static Resource Attributes

The following static-resources element attributes were used to describe how static resources were handled by the DefaultServlet or by the WebdavServlet. There are no equivalents for these attributes because WebDAV is not supported by Undertow. For more information, see https://issues.jboss.org/browse/JBEAP-1036.

AttributeBeschreibungUndertow Equivalent

disabled

Enable the default Servlet mapping.

No equivalent setting in Undertow.

file-encoding

File encoding to be used when reading static files.

No equivalent setting in Undertow.

max-depth

Maximum recursion for PROPFIND.

This is a WebDAV setting and WebDAV is not supported by Undertow.

read-only

Allow write HTTP methods (PUT, DELETE).

This is a WebDAV setting and WebDAV is not supported by Undertow.

secret

Secret for WebDAV locking operations.

This is a WebDAV setting and WebDAV is not supported by Undertow.

sendfile

Enable sendfile if possible, for files bigger than the specified byte size.

This is set to a sensible default value in Undertow and is not configurable.

webdav

Enable WebDAV functionality.

WebDAV is not supported by Undertow.

Web SSO Resource Attributes

SSO is handled differently than in the previous release and there are no equivalent attribute settings in JBoss EAP 7.

JBoss Web AttributeBeschreibungUndertow Equivalent

cache-container

Name of the cache container to use for clustered SSO.

This setting is no longer needed in Undertow. This works by default across a distributed clustered environment.

cache-name

Name of the cache to use for clustered SSO.

This setting is no longer needed in Undertow. This works by default across a distributed clustered environment.

reauthenticate

Whether each request should cause a reauthentication.

There is no equivalent setting in Undertow, which behaves similarly to the reauthenticate=true setting in JBoss EAP 6. While reauthenticate=false could possibly improve performance, it could also create security issues.

Web Access Log Attributes
JBoss Web AttributeBeschreibungUndertow Equivalent

resolve-hosts

Whether to enable resolving hosts for access logging.

Use the setting on the connector to accomplish the same behavior.

Web Connector Attributes
JBoss Web AttributeBeschreibungUndertow Equivalent

executor

The name of the executor that should be used to process the threads of this connector.

You now reference a worker that is defined in the io subsystem.

See Migrate the Threads Subsystem Configuration for more information.

proxy-binding

The socket binding to define the host and port that is used when sending a redirect.

There is no direct equivalent.

See https-listener Attributes in the JBoss EAP Configuration Guide for available configuration options.

redirect-port

The port for redirection to a secure connector.

This attribute was deprecated in JBoss EAP 6 and replaced with redirect-binding. Undertow provides the redirect-socket attribute on the http-listener element, which is a replacement for redirect-binding.

See https-listener Attributes in the JBoss EAP Configuration Guide for more information.

A.4. Übersicht über das Migrieren von JBoss Web Systemeigenschaften

Diese Übersicht veranschaulicht die Systemeigenschaften, die bisher für die JBoss Web Konfiguration verwendet wurden, und deren entsprechende Konfiguration für Undertow in JBoss EAP 7.

Tabelle A.1. Zuordnung von Servlet-Container- und Connector-Systemeigenschaften

JBoss EAP 6 Systemeigenschaft

Beschreibung

Entsprechung in JBoss EAP 7

jvmRoute

Provides a default value for the jvmRoute attribute. It does not override the automatically generated value when using the standalone-ha.xml configuration file.

It supports reload.

Management-CLI-Befehl:

/subsystem=undertow:write-attribute(name=instance-id,value=VALUE)

org.apache.tomcat.util.buf.StringCache.byte.enabled

Falls true, wird der String-Cache aktiviert für ByteChunk. Falls der Wert nicht angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

org.apache.tomcat.util.buf.StringCache.char.enabled

Falls true, wird der String-Cache aktiviert für CharChunk. Falls der Wert nicht angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

org.apache.tomcat.util.buf.StringCache.cacheSize

Die Größe des String-Caches. Falls der Wert nicht angegeben ist, wird der Standardwert 5000 verwendet.

Keine entsprechende Konfiguration

org.apache.tomcat.util.buf.StringCache.maxStringSize

Die maximale Länge des zu cachenden Strings. Falls der Wert nicht angegeben ist, wird der Standardwert 128 verwendet.

Keine entsprechende Konfiguration

org.apache.tomcat.util.http.FastHttpDateFormat.CACHE_SIZE

Die Größe des Caches für analysierte und formatierte Datumswerte. Falls der Wert nicht angegeben ist, wird der Standardwert 1000 verwendet.

Keine entsprechende Konfiguration

org.apache.catalina.core.StandardService.DELAY_CONNECTOR_STARTUP

Falls true, erfolgt der Connector-Start nicht automatisch. Dies ist hilfreich im eingebetteten Modus.

Keine entsprechende Konfiguration

org.apache.catalina.connector.Request.SESSION_ID_CHECK

Falls true, prüft der Servlet-Container, ob eine Session mit der angegebenen Session-ID in einem Kontext existiert, bevor eine Session mit dieser ID erstellt wird.

Keine entsprechende Konfiguration

org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER

Falls true, werden angepasste HTTP-Statusnachrichten innerhalb der HTTP-Header verwendet. Benutzer müssen sichergehen, dass solche Nachrichten ISO-8859-1 kodiert sind, insbesondere falls Benutzereingaben in der Nachricht enthalten sind, um eine mögliche XSS-Schwachstelle zu vermeiden. Falls der Wert nicht angegeben ist, wird der Standardwert false verwendet.

Muss befehlsorientiert aktiviert werden, indem eine angepasste io.undertow.servlet.ServletExtension implementiert wird. Verwenden Sie dann die Erweiterung, um setSendCustomReasonPhraseOnError(true) auf der io.undertow.servlet.api.DeploymentInfo Strukturinstanz aufzurufen.

org.apache.tomcat.util.http.Parameters.MAX_COUNT

Die maximale Anzahl an Parametern, die in einem Post-Body analysiert werden können. Wird diese überschritten, schlägt die Analyse mit einer IllegalStateException fehl. Der Standardwert ist 512 Parameter.

Management-CLI-Befehl:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-parameters,value=VALUE)
/subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-parameters,value=VALUE)
/subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-parameters,value=VALUE)

org.apache.tomcat.util.http.MimeHeaders.MAX_COUNT

Die maximale Anzahl an Headern, die in der HTTP-Anfrage gesendet werden können. Wird diese überschritten, schlägt die Analyse mit einer IllegalStateException fehl. Der Standardwert ist 128 Header.

Management-CLI-Befehl:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-headers,value=VALUE)
/subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-headers,value=VALUE)
/subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-headers,value=VALUE)

org.apache.tomcat.util.net.MAX_THREADS

Die maximale Anzahl an Threads, die ein Connector zur Verarbeitung von Anfragen verwenden wird. Der Standardwert ist 32 x 512. (512 x Runtime.getRuntime().availableProcessors() für den JIO Connector)

Management-CLI-Befehl:

/subsystem=io/worker=default:write-attribute(name=task-max-threads, value=VALUE)

org.apache.coyote.http11.Http11Protocol.MAX_HEADER_SIZE

Die maximale Größe der HTTP-Header in Bytes. Wird diese überschritten, schlägt die Analyse mit einer ArrayOutOfBoundsException fehl. Der Standardwert ist 8192 Bytes.

Management-CLI-Befehl:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-header-size,value=VALUE)
/subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-header-size,value=VALUE)
/subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-header-size,value=VALUE)

org.apache.coyote.http11.Http11Protocol.COMPRESSION

Erlaubt die Verwendung einfacher Komprimierung mit dem HTTP-Connector. Der Standardwert ist off. Verwenden Sie den Wert on, um die Komprimierung bedingt zu aktivieren, oder force, um sie immer zu aktivieren.

Konfigurieren Sie einen Filter mithilfe der Management-CLI:

# Create a filter
/subsystem=undertow/configuration=filter/gzip=gzipfilter:add()
/subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add()

org.apache.coyote.http11.Http11Protocol.COMPRESSION_RESTRICTED_UA

Reguläre Ausdrücke für Benutzer-Agents, die keine komprimierten Inhalte erhalten werden. Der Standardwert ist leer.

Konfigurieren Sie ein Prädikat in einem Filter mithilfe der Management-CLI:

# Use a predicate in a filter
/subsystem=undertow/configuration=filter/gzip=gzipfilter:add()
/subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="regex[pattern='AppleWebKit',value=%{i,User-Agent}]")

org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIME_TYPES

Präfixe für Inhaltstypen von komprimierbarem Inhalt. Der Standardwert ist text/html,text/xml,text/plain.

Konfigurieren Sie ein Prädikat in einem Filter mithilfe der Management-CLI:

# Use a predicate in a filter
/subsystem=undertow/configuration=filter/gzip=gzipfilter:add()
/subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="regex[pattern='text/html',value=%{o,Content-Type}]")

org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIN_SIZE

Mindestgröße von Inhalten, die komprimiert werden. Der Standardwert ist 2048 Bytes.

Konfigurieren Sie ein Prädikat in einem Filter mithilfe der Management-CLI:

# Use a predicate in a filter
/subsystem=undertow/configuration=filter/gzip=gzipfilter:add()
/subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="max-content-size[value=MIN_SIZE]")

org.apache.coyote.http11.DEFAULT_CONNECTION_TIMEOUT

Standardmäßiger Socket-Timeout. Der Standardwert ist 60000 ms.

Management-CLI-Befehl:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=no-request-timeout,value=VALUE)
/subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=no-request-timeout,value=VALUE)
/subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=no-request-timeout,value=VALUE)

org.jboss.as.web.deployment.DELETE_WORK_DIR_ONCONTEXTDESTROY

Verwenden Sie diese Eigenschaft, um .java und .class Dateien zu entfernen und so sicherzustellen, dass JSP-Quellen neu kompiliert werden. Der Standardwert ist false. Standard-Socket-Timeout für keep-alive. Der Standardwert lautet -1 ms, was bedeutet, dass der Standard-Socket-Timeout verwendet wird.

Keine entsprechende Konfiguration

org.apache.tomcat.util.buf.StringCache.trainThreshold

Gibt an, wie oft toString() aufgerufen werden muss, bevor der Cache aktiviert wird. Der Standardwert lautet 100000.

Keine entsprechende Konfiguration

Tabelle A.2. Zuordnung von EL-Systemeigenschaften

JBoss EAP 6 Systemeigenschaft

Beschreibung

Entsprechung in JBoss EAP 7

org.apache.el.parser.COERCE_TO_ZERO

If true, when coercing expressions to numbers, empty strings ("") and null will be coerced to zero as required by the specification. If a value is not specified, the default value of true is used.

Systemeigenschaft ist noch gültig und wird von der EL verarbeitet

Tabelle A.3. Zuordnung von JSP-Systemeigenschaften

JBoss EAP 6 Systemeigenschaft

Beschreibung

Entsprechung in JBoss EAP 7

org.apache.jasper.compiler.Generator.VAR_EXPRESSIONFACTORY

Der Name der Variable, die für die Expression Factory der Expression Language verwendet wird. Falls kein Wert angegeben ist, wird der Standardwert _el_expressionfactory verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.compiler.Generator.VAR_INSTANCEMANAGER

Der Name der Variable, die für die Instanz-Manager-Factory verwendet wird. Falls kein Wert angegeben ist, wird der Standardwert _jsp_instancemanager verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING

Falls false, wird die Anforderung, dass Anführungszeichen in JSP-Attributen mit Fluchtsymbolen versehen sein müssen, gelockert, sodass ein fehlendes erforderliches Anführungszeichen keinen Fehler verursacht. Falls kein Wert angegeben ist, wird der spezifikationskonforme Standardwert true verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE

Jeglicher Tag-Puffer, der org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE übersteigt, wird gelöscht und ein neuer Puffer mit der Standardgröße wird erstellt. Falls kein Wert angegeben ist, wird der Standardwert 512 verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.runtime.JspFactoryImpl.USE_POOL

Falls true, wird ein ThreadLocal PageContext-Pool verwendet. Falls kein Wert angegeben ist, wird der Standardwert true verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.runtime.JspFactoryImpl.POOL_SIZE

Die Größe des Thread-lokalen PageContext. Falls kein Wert angegeben ist, wird der Standardwert 8 verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.JSP_SERVLET_BASE

Die Basisklasse des Servlets, generiert vom JSP. Falls kein Wert angegeben ist, wird der Standardwert org.apache.jasper.runtime.HttpJspBase verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.SERVICE_METHOD_NAME

Der Name der Servicemethode, die von der Basisklasse aufgerufen wird. Falls kein Wert angegeben ist, wird der Standardwert _jspService verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.SERVLET_CLASSPATH

Der Name des ServletContext-Attributs, das den Klassenpfad für JSP liefert. Falls kein Wert angegeben ist, wird der Standardwert org.apache.catalina.jsp_classpath verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.JSP_FILE

Der Name des Anfrageattributs für das <jsp-file>-Element einer Servlet-Definition. Falls auf einer Anfrage vorhanden, überschreibt dies den Wert, der von request.getServletPath() zurückgegeben wird, zur Auswahl der auszuführenden JSP-Seite. Falls kein Wert angegeben ist, wird der Standardwert org.apache.catalina.jsp_file verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.PRECOMPILE

Der Name des Anfrageparameters, der die JSP-Engine dazu veranlasst, das Servlet bereits zu generieren, jedoch nicht aufzurufen. Falls kein Wert angegeben ist, wird der Standardwert org.apache.catalina.jsp_precompile verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.JSP_PACKAGE_NAME

Der standardmäßige Paketname für kompilierte JSP-Seiten. Falls kein Wert angegeben ist, wird der Standardwert org.apache.jsp verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.TAG_FILE_PACKAGE_NAME

Der standardmäßige Paketname für Tag-Handler, generiert von Tag-Dateien. Falls kein Wert angegeben ist, wird der Standardwert org.apache.jsp.tag verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.TEMP_VARIABLE_NAME_PREFIX

Zu verwendendes Präfix für generierte temporäre Variablennamen. Falls kein Wert angegeben ist, wird der Standardwert _jspx_temp verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS

Falls true, wird der Instanzenmanager dazu verwendet, um Tag-Handler-Instanzen zu beziehen. Falls kein Wert angegeben ist, wird der Standardwert true verwendet.

Systemeigenschaft hat sich nicht verändert

org.apache.jasper.Constants.INJECT_TAGS

Falls true, werden in Tags spezifizierte Annotationen verarbeitet und eingespeist. Dies kann Auswirkungen auf die Performance haben, wenn einfache Tags verwendet werden oder wenn Tag-Pooling deaktiviert ist. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Systemeigenschaft hat sich nicht verändert

Tabelle A.4. Zuordnung von Sicherheits-Systemeigenschaften

JBoss EAP 6 Systemeigenschaft

Beschreibung

Entsprechung in JBoss EAP 7

org.apache.catalina.connector.RECYCLE_FACADES

Falls true oder falls ein Sicherheitsmanager eingesetzt wird, so wird für jede Anfrage ein neues Fassaden-Objekt erstellt. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH

Falls true, ist das »\« Zeichen als Pfadtrennzeichen zulässig. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH

Falls true, sind »%2F« und »%5C« als Pfadtrennzeichen zulässig. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Management-CLI-Befehl:

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE)
/subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE)
/subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE)

org.apache.catalina.STRICT_SERVLET_COMPLIANCE

Falls kein Wert angegeben ist, wird true verwendet. Falls true, hat dies folgende Auswirkungen: Jegliches in einem Wrapper eingeschlossene Anfrage- oder Antwortobjekt, das an einen Applikations-Dispatcher übergeben wird, wird überprüft um sicherzustellen, dass die Originalanfrage oder -antwort eingeschlossen wurde. (SRV.8.2 / SRV.14.2.5.1) Falls keine Zeichenkodierung definiert wurde, verursacht ein Aufruf von Response.getWriter() für nachfolgende Aufrufe von Response.getCharacterEncoding() den Wert ISO-8859-1, und der Content-Type-Anfrage-Header enthält die Komponente charset=ISO-8859-1 (SRV.15.2.22.1) Jede Anfrage, die mit einer Session verknüpft ist, verursacht eine Aktualisierung des Zeitstempels für den letzten Zugriff auf diese Session, ungeachtet dessen, ob die Anfrage ausdrücklich auf diese Session zugreift. (SRV.7.6)

Standardmäßig konform

org.apache.catalina.core.StandardWrapperValve.SERVLET_STATS

Falls true oder falls org.apache.catalina.STRICT_SERVLET_COMPLIANCE true lautet, sammelt der Wrapper die JSR-77 Statistiken für einzelne Servlets. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

org.apache.catalina.session.StandardSession.ACTIVITY_CHECK

Falls true oder falls org.apache.catalina.STRICT_SERVLET_COMPLIANCE true lautet, verfolgt Tomcat die Anzahl aktiver Anfragen für jede Session. Bei der Überprüfung, ob eine Session gültig ist, wird jede Session mit mindestens einer aktiven Anfrage stets als gültig betrachtet. Falls kein Wert angegeben ist, wird der Standardwert false verwendet.

Keine entsprechende Konfiguration

A.5. Kompatibilität und Interoperabilität zwischen Releases

Dieser Abschnitt beschreibt die Kompatibilität und Interoperabilität von Client- und Server-EJB und Messaging-Komponenten zwischen den JBoss EAP 5, JBoss EAP 6 und JBoss EAP 7 Releases.

EJB Remoting über IIOP

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 5 Server

EJB Remoting mittels JNDI

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server

JBoss EAP 6 bietet Unterstützung für die EJB 3.1 Spezifikation und führte die Verwendung standardisierter, globaler JNDI Namespaces ein, die noch immer in JBoss EAP 7 verwendet werden. Aufgrund der Änderungen an den Namen der JNDI Namespaces sind die folgenden Konfigurationen nicht kompatibel:

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 oder JBoss EAP 6 Server
  • Verbindungen von einem JBoss EAP 7 oder JBoss EAP 6 Client mit einem JBoss EAP 5 Server

Weitere Informationen über die Änderungen der standardisierten JNDI Namespaces finden Sie unter JNDI-Änderungen im JBoss EAP 6 Migrationshandbuch.

EJB Remoting mittels @WebService

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 5 Server

Standalone Messaging-Client

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server

In der folgenden Konfiguration ist die Verbindung möglich, sofern der Client die Messaging-Broker-spezifsche HornetQ-API anstelle der generischen JMS-API verwendet. Allerdings müssen JNDI-Lookups mithilfe der alten JBoss EAP JNDI-Naming-Erweiterung adressiert werden, die in JBoss EAP 7 enthalten ist.

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 Server

Aufgrund von Problemen bei der Protokollkompatibilität kann das in JBoss EAP 7 integrierte Messaging nicht mit HornetQ 2.2.x verbinden, das in JBoss EAP 5 enthalten war. Aus diesem Grund sind die folgenden Konfigurationen nicht kompatibel.

  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 5 Server

Messaging-MDBs

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server

In der folgenden Konfiguration ist die Verbindung möglich, sofern der Client die Messaging-Broker-spezifsche HornetQ-API anstelle der generischen JMS-API verwendet. Allerdings müssen JNDI-Lookups mithilfe der alten JBoss EAP JNDI-Naming-Erweiterung adressiert werden, die in JBoss EAP 7 enthalten ist.

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 Server

Aufgrund von Problemen bei der Protokollkompatibilität kann das in JBoss EAP 7 integrierte Messaging nicht mit HornetQ 2.2.x verbinden, das in JBoss EAP 5 enthalten war. Aus diesem Grund sind die folgenden Konfigurationen nicht kompatibel.

  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 5 Server

JMS-Bridges

Sie sollten keinerlei Probleme haben mit den folgenden Konfigurationen.

  • Verbindungen von einem JBoss EAP 5 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 6 Client mit einem JBoss EAP 7 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 6 Server
  • Verbindungen von einem JBoss EAP 7 Client mit einem JBoss EAP 5 Server





Revised on 2018-01-05 08:53:47 EST

Rechtlicher Hinweis

Copyright © 2018 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.