Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
Migrationshandbuch
For Use with Red Hat JBoss Enterprise Application Platform 7.0
Zusammenfassung
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ürEAP_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\
-
Für Red Hat Enterprise Linux, Solaris und HP-UX:
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
oderC:\Documents and Settings\USER_NAME\jbdevstudio\runtimes\jboss-eap\
-
Für Red Hat Enterprise Linux:
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.
- Machen Sie sich mit den Features von Java EE 7 vertraut.
- Lesen Sie Was ist neu in JBoss EAP 7?.
- Überprüfen Sie die Liste veralteter und nicht unterstützter Features.
- Review the material in the JBoss EAP 7 Getting Started Guide.
- Sehen Sie sich die Tools an, die Ihnen bei der Migration behilflich sein können.
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.
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 diedeployment-*
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
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.
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 neuehttp-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 desejb3
-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.
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 Subsystem | JBoss EAP 7 Subsystem | Management-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.
- 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.
Starten Sie den JBoss EAP 7 Server mit der JBoss EAP 6 Konfiguration.
- Sichern Sie die JBoss EAP 7 Serverkonfigurationsdateien.
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
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
AnmerkungSie 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.
Ö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
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")] } ] } }
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
AnmerkungDie Operationen
describe-migration
undmigrate
desmessaging
-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.Ü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." ]} }
AnmerkungDie Liste der
migrate
- unddescribe-migration
-Warnungen für jedes Subsystem finden Sie im Referenzmaterial am Ende dieses Handbuchs.Ü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.
AnmerkungSie müssen diesen Vorgang für jedes der Subsysteme
jacorb
,messaging
undweb
wiederholen, indem Sie die folgenden Befehle ausführen./subsystem=jacorb:migrate /subsystem=messaging:migrate /subsystem=web:migrate
Entfernen Sie die Subsysteme
cmp
,jaxr
undthreads
und Erweiterungen aus der Serverkonfiguration.Während Sie noch am Management-CLI-Prompt sind, entfernen Sie die obsoleten Subsysteme
cmp
,jaxr
undthreads
, 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
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 Namespaceurn:jboss:domain:undertow:3.1
. -
Das Erweiterungsmodul
org.jboss.as.web
inEAP_HOME/modules/system/layers/base/
wurde ersetzt durch das Erweiterungsmodulorg.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.
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 Deskriptorklassejboss-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
Valve | Handler |
---|---|
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>
- Erstellen Sie ein Treibermodul für die Datenbank, welche die Protokolleinträge speichern soll.
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>
Konfigurieren Sie einen
expression-filter
imundertow
-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.
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.
- Folgen Sie den Anweisungen unter Starten des Servers und der Management-CLI.
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-Name | ActiveMQ-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:
-
Sie können die HornetQ Messaging Daten aus der vorherigen Release exportieren und mittels der
import-journal
-Operation der Management-CLI importieren. Siehe Migrieren von Messaging-Daten mittels Export und Import für weitere Informationen. - Sie können die Daten der vorherigen Release migrieren, indem Sie eine JMS-Bridge konfigurieren. Dieser Prozess wird in Migrieren von Messaging-Daten mittels JMS-Bridge beschrieben.
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.
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
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>
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.
- Stoppen Sie den JBoss EAP 6 Server.
- Erstellen Sie das angepasste Modul wie oben beschrieben.
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
- Vergewissern Sie sich, dass nach Abschluss des Befehls keine Fehler- oder Warnmeldungen im Protokoll verzeichnet wurden.
- 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
- Stoppen Sie den JBoss EAP 6 Server.
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.
-
Standardmäßig befindet sich das HornetQ-Journal im Verzeichnis
-
Vergewissern Sie sich, dass die
InQueue
JMS-Warteschlange, die die JMS-Nachrichten enthält, auf dem JBoss EAP 6 Server definiert ist. Vergewissern Sie sich, dass die
messaging
-Subsystemkonfiguration einen Eintrag fürRemoteConnectionFactory
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
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 VerzeichnisEAP_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/
-
Falls Sie keine Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server:
Entfernen Sie das
<resource-root>
für den HornetQlib
-Pfad aus der JBoss EAP 7EAP_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"/>
WarnungWenn Sie den HornetQ
lib
-Pfadresource-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 VerzeichnisEAP_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
-
Falls Sie keine Patches auf diesem Modul angewendet haben, kopieren Sie dieses Verzeichnis vom JBoss EAP 6.4 Server:
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 immessaging-activemq
-Subsystem des JBoss EAP 7 Servers.<jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
Vergewissern Sie sich, dass das
messaging-activemq
-Subsystemdefault
-Server eine Konfiguration fürInVmConnectionFactory
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])
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 WarteschlangeMigratedMessagesQueue
ü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 immessaging-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>
-
Falls für JBoss EAP 6 die Sicherheit konfiguriert ist, müssen Sie die JMS-Bridgekonfiguration mit einem
<source>
-Element konfigurieren, das einensource-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
Ü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
- Vergewissern Sie sich, dass Sie das JMS-Ziel auf dem JBoss EAP 7 Server implementiert haben.
- 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 Verzeichnisname | JBoss EAP 7 Verzeichnisname |
---|---|
messagingbindings/ |
activemq/bindings/ |
messagingjournal/ |
activemq/journal/ |
messaginglargemessages/ |
activemq/largemessages/ |
messagingpaging/ |
activemq/paging/ |
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.
Connect to the JConsole using the following command.
EAP_HOME/bin/jconsole.sh
- Connect to JBoss EAP local process. Note that it should start with "jboss-modules.jar".
- In the MBeans tab, choose jboss.as → messaging-activemq → default → Operations 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
Element | Nicht unterstützte Parameter |
---|---|
|
|
|
|
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
Element | Auf »off« zu setzende Parameter |
---|---|
|
|
|
(alle außer
|
|
|
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
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 6 | Ersatz 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 6 | Ersatz 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 einewebservices.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.
Eigenschaft | Typ | Beschreibung |
---|---|---|
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 |
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 Paketorg.apache.wss4j.common.ext
verlegt wurde. -
Die meisten der SAML-Bean-Objekte vom Paket
org.apache.ws.security.saml.ext
wurden in das Paketorg.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 auchActAs
-Tokens. Infolgedessen müssen gültige Werte für Benutzername und Passwort imUsernameToken
angegeben werden, das für dasActAs
-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 einesetRequireBearerSignature()
-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 Systemeigenschaftorg.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.
Die folgenden Interzeptor-Schnittstellen gelten in RESTEasy 3.x als veraltet.
-
Die Schnittstelle
org.jboss.resteasy.spi.interception.PreProcessInterceptor
wurde in RESTEasy 3.x ersetzt durch die Schnittstellejavax.ws.rs.container.ContainerRequestFilter
. Die folgenden Schnittstellen und Klassen gelten ebenfalls als veraltet in RESTEasy 3.x.
-
org.jboss.resteasy.spi.interception.MessageBodyReaderInterceptor
-
org.jboss.resteasy.spi.interception.MessageBodyWriterInterceptor
-
org.jboss.resteasy.spi.interception.MessageBodyWriterContext
-
org.jboss.resteasy.spi.interception.MessageBodyReaderContext
-
org.jboss.resteasy.core.interception.InterceptorRegistry
-
org.jboss.resteasy.core.interception.InterceptorRegistryListener
-
org.jboss.resteasy.core.interception.ClientExecutionContextImpl
-
-
Die Schnittstelle
org.jboss.resteasy.spi.interception.MessageBodyWriterInterceptor
wurde ersetzt durch die Schnittstellejavax.ws.rs.ext.WriterInterceptor
. In addition, some changes to the
javax.ws.rs.ext.MessageBodyWriter
interface might not be backward compatible with respect to JAX-RS 1.x. If your application used JAX-RS 1.x, review your application code to make sure you define@Produces
or@Consumes
for your endpoints. Failure to do so might result in an error similar to the following.org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: <OBJECT> of media type:
Nachfolgend sehen Sie ein Beispiel für einen REST-Endpunkt, der diesen Fehler verursacht.
@Path("dates") public class DateService { @GET @Path("daysuntil/{targetdate}") public long showDaysUntil(@PathParam("targetdate") String targetDate) { DateLogger.LOGGER.logDaysUntilRequest(targetDate); final long days; try { final LocalDate date = LocalDate.parse(targetDate, DateTimeFormatter.ISO_DATE); days = ChronoUnit.DAYS.between(LocalDate.now(), date); } catch (DateTimeParseException ex) { // ** DISCLAIMER **. This example is contrived. throw new WebApplicationException(Response.status(400).entity(ex.getLocalizedMessage()).type(MediaType.TEXT_PLAIN) .build()); } return days; } }
Um diesen Fehler zu beheben, fügen Sie den Import für
javax.ws.rs.Produces
und die Annotation@Produces
wie folgt hinzu.... import javax.ws.rs.Produces; ... @Path("dates") public class DateService { @GET @Path("daysuntil/{targetdate}") @Produces(MediaType.TEXT_PLAIN) public long showDaysUntil(@PathParam("targetdate") String targetDate) { DateLogger.LOGGER.logDaysUntilRequest(targetDate); final long days; try { final LocalDate date = LocalDate.parse(targetDate, DateTimeFormatter.ISO_DATE); days = ChronoUnit.DAYS.between(LocalDate.now(), date); } catch (DateTimeParseException ex) { // ** DISCLAIMER **. This example is contrived. throw new WebApplicationException(Response.status(400).entity(ex.getLocalizedMessage()).type(MediaType.TEXT_PLAIN) .build()); } return days; } }
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.
Die folgenden Klassen sind veraltet.
-
Die Ausnahme
org.jboss.resteasy.client.ClientResponseFailure
und die Schnittstellenorg.jboss.resteasy.client.ClientExecutor
undorg.jboss.resteasy.client.EntityTypeFactory
sind ebenfalls veraltet. Sie müssen die Klassen
org.jboss.resteasy.client.ClientRequest
undorg.jboss.resteasy.client.ClientResponse
ersetzen durchorg.jboss.resteasy.client.jaxrs.ResteasyClient
bzw.javax.ws.rs.core.Response
.Nachfolgend sehen Sie ein Beispiel für das Senden eines Link-Headers mit dem RESTEasy-Client in RESTEasy 2.3.x.
ClientRequest request = new ClientRequest(generateURL("/linkheader/str")); request.addLink("previous chapter", "previous", "http://example.com/TheBook/chapter2", null); ClientResponse response = request.post(); LinkHeader header = response.getLinkHeader();
Nachfolgend sehen Sie ein Beispiel für das Durchführen derselben Aufgabe mit dem RESTEasy-Client in RESTEasy 3.
ResteasyClient client = new ResteasyClientBuilder().build(); Response response = client.target(generateURL("/linkheader/str")).request() .header("Link", "<http://example.com/TheBook/chapter2>; rel=\"previous\"; title=\"previous chapter\"").post(Entity.text(new String())); javax.ws.rs.core.Link link = response.getLink("previous");
Siehe
resteasy-jaxrs-client
-Quickstart für ein Beispiel für einen externen JAX-RS RESTEasy-Client, der mit einem JAX-RS Webservice interagiert.-
Die Klassen und Schnittstellen im Paket
org.jboss.resteasy.client.cache
sind ebenfalls veraltet. Sie wurden ersetzt durch entsprechende Klassen und Schnittstellen im Paketorg.jboss.resteasy.client.jaxrs.cache
.
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
undSignedOutput
fürresteasy-crypto
müssen denContent-Type
aufmultipart/signed
gesetzt haben, entweder imRequest
- oder imResponse
-Objekt oder durch Verwendung der Annotation@Consumes
oder@Produces
. -
SignedOutput
undSignedInput
können dazu verwendet werden, um dasapplication/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-Typtext/plain
ist, wirdSignedOutput
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 Ausnahme | Ersatz-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 dembean-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 denbean-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 dembean-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
-
Die Schnittstelle
org.hibernate.integrator.spi.Integrator
hat sich entsprechend der Bootstrap-Überarbeitung verändert. -
Ein neues Paket
org.hibernate.engine.jdbc.env
wurde erstellt. Es enthält die Schnittstelleorg.hibernate.engine.jdbc.env.spi.JdbcEnvironment
, die aus der Schnittstelleorg.hibernate.engine.jdbc.spi.JdbcServices
extrahiert wurde. -
Eine neue Schnittstelle
org.hibernate.boot.model.relational.ExportableProducer
wurde eingeführt, was Auswirkungen auforg.hibernate.id.PersistentIdentifierGenerator
-Implementierungen hat. -
Die Signatur von
org.hibernate.id.Configurable
wurde geändert, umorg.hibernate.service.ServiceRegistry
zu akzeptieren, statt nurorg.hibernate.dialect.Dialect
. -
Die Schnittstelle
org.hibernate.metamodel.spi.TypeContributor
wurde migriert zuorg.hibernate.boot.model.TypeContributor
. -
Die Schnittstelle
org.hibernate.metamodel.spi.TypeContributions
wurde migriert zuorg.hibernate.boot.model.TypeContributions
.
Typenhandhabung
-
Integrierte
org.hibernate.type.descriptor.sql.SqlTypeDescriptor
-Implementierungen registrieren sich nicht mehr automatisch bei derorg.hibernate.type.descriptor.sql.SqlTypeDescriptorRegistry
. Applikationen, die angepassteSqlTypeDescriptor
-Implementierungen verwenden, welche die integrierten Implementierungen erweitern und auf dieses Verhalten angewiesen sind, müssen aktualisiert werden, um selbstSqlTypeDescriptorRegistry.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 Dateihbm.xml
definiert sind und Siejavax.persistence.EnumType.STRING
name-mapping
möchten, muss diese Konfiguration ausdrücklich angegeben werden. Nutzen Sie dazu entweder die EinstellunguseNamed(true)
oder geben Sie einen VARCHAR-Wert von12
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 dieorg.hibernate.Transaction
Implementierung nun mit einemorg.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 Eigenschafthibernate.transaction.factory_class
(die jetzt veraltet ist) und verwiesen auf einenorg.hibernate.engine.transaction.spi.TransactionFactory
-FQN (vollständigen Namen). Mit Hibernate ORM 5 spezifizieren Sie die Einstellunghibernate.transaction.coordinator_class
und verweisen auf einenorg.hibernate.resource.transaction.TransactionCoordinatorBuilder
. Sieheorg.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.
WichtigIf 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 tojdbc
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 thehibernate.transaction.coordinator_class
property value tojta
or provide a customorg.hibernate.resource.transaction.TransactionCoordinatorBuilder
that builds aorg.hibernate.resource.transaction.TransactionCoordinator
that properly coordinates with JTA-based transactions.
-
jdbc: Manage transactions using the JDBC
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
voncfg.xml
geladenen Eigenschaften haben die Namen bislang nicht mit dem Präfixhibernate
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 ausorg.hibernate.envers.boot.internal.EnversService
entfernt. -
Die Methodenparameter
AuditStrategy
wurden geändert, um die hinfälligeAuditConfiguration
zu entfernen und den neuenEnversService
zu verwenden. -
Verschiedene Klassen und Schnittstellen im
org.hibernate.hql.spi
-Paket und Unterpaketen wurden verlegt in das neue Paketorg.hibernate.hql.spi.id
. Dazu gehört die KlasseMultiTableBulkIdStrategy
sowie die SchnittstellenAbstractTableBasedBulkIdHandler
,TableBasedDeleteHandlerImpl
undTableBasedUpdateHandlerImpl
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 Methodeorg.hibernate.cache.spi.access.AccessType.getExternalName()
anstelle der Aufzählungskonstantenorg.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 Modulhibernate-search-engine
in das Modulhibernate-search-orm
verlegt. Andere Integratoren sollten ausschließlichSearchIntegrator
verwenden, was das veralteteSearchFactoryIntegrator
ersetzt. -
Der Aufzählungswert
SpatialMode.GRID
wurde umgenannt zuSpatialMode.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 Beispielorg.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 vonServiceManager
,Service
,Startable
undStoppable
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 LucenesIndexUpgrader
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 dennull
-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 Klassen | Neue 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
Schnittstelle | Beschreibung |
---|---|
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
Klasse | Beschreibung |
---|---|
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ählung | Beschreibung |
---|---|
org.hibernate.search.annotations.FieldCacheType |
Entfernen Sie die veraltete Annotation |
Veraltete Annotationen in Hibernate Search
Annotation | Beschreibung |
---|---|
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
Methode | Beschreibung |
---|---|
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 |
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 |
Veraltete Konstruktoren in Hibernate Search
Konstruktor | Beschreibung |
---|---|
org.hibernate.search.cfg.NumericFieldMapping(PropertyDescriptor, EntityDescriptor, SearchMapping) |
Verwenden Sie stattdessen |
Ä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.
-
Die Aufzählungskonstanten
IndexWriterSetting.MAX_THREAD_STATES
undIndexWriterSetting.TERM_INDEX_INTERVAL
sind veraltet. Sie beeinflussen, welche Eigenschaften aus der Konfiguration gelesen werden; dass diese nun fehlen, bedeutet, dass Konfigurationseigenschaften wiehibernate.search.Animals.2.indexwriter.term_index_interval = default
nun ignoriert werden. Die einzige Nebenwirkung ist die, dass die Eigenschaft nicht angewendet wird. -
Die Schnittstelle
SearchFactoryIntegrator
ist nun veraltet. Sie sollten unverzüglich sämtlichen Code zuSearchIntegrator
migrieren. -
Die Klasse
SearchFactoryBuilder
ist nun veraltet. Verwenden Sie stattdessenSearchIntegrationBuilder
. -
The
HSQuery.getExtendedSearchIntegrator()
method has been deprecated. It might be possible to useSearchIntegrator
, but it is preferable to remove it altogether. -
Die Methode
DocumentBuilderIndexedEntity.getFieldCacheOption()
ist nun veraltet. Es gibt keinen Ersatz. -
Die Methode
BuildContext.getIndexingStrategy()
ist nun veraltet. Verwenden Sie stattdessenBuildContext.getIndexingMode()
. -
Die Methode
DirectoryHelper.getVerifiedIndexDir(String, Properties, boolean)
ist veraltet. Verwenden Sie stattdessenDirectoryHelper.getVerifiedIndexPath(java.lang.String, java.util.Properties, boolean)
. Nachfolgend sehen Sie eine Liste mit Hibernate Search Klassen, die neu paketiert oder umbenannt wurden.
Bisherige Pakete und Klassen Neue Pakete und Klassen org.hibernate.search.engine.impl.SearchMappingBuilder
org.hibernate.search.engine.spi.SearchMappingHelper
org.hibernate.search.indexes.impl.DirectoryBasedIndexManager
org.hibernate.search.indexes.spi.DirectoryBasedIndexManager
org.hibernate.search.spi.MassIndexerFactory
org.hibernate.search.batchindexing.spi.MassIndexerFactory
org.hibernate.search.spi.SearchFactoryBuilder
org.hibernate.search.spi.SearchIntegratorBuilder
org.hibernate.search.spi.SearchFactoryIntegrator
org.hibernate.search.spi.SearchIntegrator
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 als8080
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 einenremote
-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.
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.2. Änderungen an PicketLink
For information about the changes required for SSO with SAML v2 configuration, see Changes from Previous Versions of JBoss EAP in How to Set Up SSO with SAML v2 for JBoss EAP.
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.
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 Klasse | Ersatzklasse |
---|---|
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
undexclude
der Elementeimports
undexports
verwenden, um das Klassenladen in dermodule.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.
Konfigurationselement | Beschreibung der Änderung |
---|---|
<max-active-sessions/> |
Bislang schlug die Session-Erstellung fehl, falls dadurch die Anzahl der aktiven Sessions den in
In der neuen Implementierung wird |
<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 |
<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 |
<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
In der neuen Implementierung wird die |
<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-interval/> |
Dies war nur relevant für |
<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 zurjboss-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.
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.
Paket JBoss EAP 6 JBoss 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 FeldUser 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.
- 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.
- Lesen Sie das JBoss EAP 6 Migrationshandbuch sowie dieses Handbuch, um sich mit den Inhalten beider Handbücher vertraut zu machen.
- Verwenden Sie die JBoss EAP 5 Component Upgrade Reference als Referenz für Migrationsinformationen über bestimmte Komponenten und Features.
- 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.
- 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
undthreads
- 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 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 |
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 |
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 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 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 |
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.
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.
Warnmeldung | Bedeutung/Lösung |
---|---|
The |
Die $ 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
Nicht unterstützte Eigenschaften sind unter anderem: |
The properties X use expressions. Configuration properties that are used to resolve those expressions should be transformed manually to the new |
Eigenschaften, die Ausdrücke verwenden, müssen manuell vom Administrator konfiguriert werden.
Beispielsweise definierte das |
Can not migrate: the new |
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.
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.
Warnmeldung | Bedeutung/Lösung |
---|---|
The |
Die $ EAP_HOME/bin/standalone.sh --admin-only |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Die Ressource |
Klassen, die X bereitstellen, werden während der Migration verworfen. Um sie im neuen |
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 |
Dies bedeutet, dass die Attribute |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Diese Meldung ist selbsterklärend und nennt die Lösung. |
Can not migrate attribute |
Die Ressource |
Can not create a |
Die veralteten HornetQ Remote |
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:
|
Can not migrate attribute X from resource Y. This attribute is not supported by the new |
Einige Attribute werden im neuen
|
Can not migrate attribute |
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.
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.
Warnmeldung | Bedeutung/Lösung |
---|---|
Migrate operation only allowed in admin only mode (Migrations-Operation nur im »admin-only«-Modus erlaubt) |
Die $ 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 |
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 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 |
Diese Meldung ist selbsterklärend. |
Could not migrate |
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 This warning can occur for the following 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
|
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.
Attribute | Beschreibung | Undertow 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.
Attribute | Beschreibung | Undertow 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 |
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 Attribute | Beschreibung | Undertow 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 |
Web Access Log Attributes
JBoss Web Attribute | Beschreibung | Undertow 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 Attribute | Beschreibung | Undertow 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 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 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
It supports |
Management-CLI-Befehl: /subsystem=undertow:write-attribute(name=instance-id,value=VALUE) | |
org.apache.tomcat.util.buf.StringCache.byte.enabled |
Falls |
Keine entsprechende Konfiguration | |
org.apache.tomcat.util.buf.StringCache.char.enabled |
Falls |
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 |
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 |
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 |
Keine entsprechende Konfiguration | |
org.apache.catalina.core.StandardService.DELAY_CONNECTOR_STARTUP |
Falls |
Keine entsprechende Konfiguration | |
org.apache.catalina.connector.Request.SESSION_ID_CHECK |
Falls |
Keine entsprechende Konfiguration | |
org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER |
Falls |
Muss befehlsorientiert aktiviert werden, indem eine angepasste | |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Keine entsprechende Konfiguration | |
org.apache.tomcat.util.buf.StringCache.trainThreshold |
Gibt an, wie oft |
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 |
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 |
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 |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING |
Falls |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE |
Jeglicher Tag-Puffer, der |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.runtime.JspFactoryImpl.USE_POOL |
Falls |
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 |
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 |
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 |
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 |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.Constants.JSP_FILE |
Der Name des Anfrageattributs für das |
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 |
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 |
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 |
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 |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS |
Falls |
Systemeigenschaft hat sich nicht verändert | |
org.apache.jasper.Constants.INJECT_TAGS |
Falls |
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 |
Keine entsprechende Konfiguration | |
org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH |
Falls |
Keine entsprechende Konfiguration | |
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH |
Falls |
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 |
Standardmäßig konform | |
org.apache.catalina.core.StandardWrapperValve.SERVLET_STATS |
Falls |
Keine entsprechende Konfiguration | |
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK |
Falls |
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