Annotationssuchen während der Anwendungsimplementierung reduzieren

Für die Implementierung von Unternehmensanwendungen, die viele Klassen enthalten und zur Annotationsverarbeitung in der Lage sind (nicht mit "metadata-complete" markiert), ist mehr Zeit erforderlich. Zum Durchsuchen (Scannen) von Anwendungsbinärdateien auf Annotationen, die von Java™ EE 5 eingeführt wurden, ist zusätzliche Zeit erforderlich. Wenn keine weiteren Optionen zum Eingrenzen der zu durchsuchenden Klassen verfügbar sind, müssen, sofern das Durchsuchen für ein Modul aktiviert ist, alle Klassen im Modul durchsucht werden. Das Durchsuchen aller Klassen ist auch dann erforderlich, wenn nur ein kleiner Teil der Klassen in einem bestimmten Modul Annotationen hat.

Vorbereitende Schritte

Zur Verbesserung der Implementierungsleistung wird eine Technologie für die schnelle Bytecode-Suche verwendet. Es kann aber eine bessere Implementierungsleistung erzielt werden, wenn die auf Annotationen zu durchsuchenden Klassen eingegrenzt werden.

Wenn ein Modul mit "metadata-complete" markiert ist, gilt dies für das gesamte Modul. Ein Modul kann nicht mit "metadata-complete" markiert werden, wenn eine Annotationsverarbeitung erforderlich ist. Außerdem wird durch das Markieren eines Moduls mit "metadata-complete" verhindert, dass das Modul durchsucht wird. Dies führt zu Problemen bei Webmodulen, die EJB- oder Web-Service-Annotationen verwenden.

JAR-Dateien von Webmodularchiven (WAR-Dateien) können in den Anwendungsbibliotheksordner verschoben werden. Möglicherweise können die WAR-Dateien aber nicht verschoben werden, weil dadurch die Webmodulkapselung aufgehoben werden kann oder weil mehrere Module vorhanden sind, für die verschiedene JAR-Dateien erforderlich sind.

IBM® WebSphere Application Server stellt Optionen für das Eingrenzen der auf Annotationen zu durchsuchenden Klassen bereit, mit denen diese Einschränkungen umgangen werden können und die Implementierungszeit reduziert werden kann.

Installieren Sie eine Anwendung, die Java Platform, Enterprise Edition (Java EE) 5 oder höher unterstützt, auf einem Produktserver. Wenn die Implementierung unverhältnismäßig langsam ist, Sie die Anwendung zu einem späteren Zeitpunkt erneut implementieren möchten und die Anwendung Module enthält, die zur Annotationsverarbeitung in der Lage sind, führen Sie die in diesem Thema beschriebenen Schritte aus, um die Anzahl der auf Annotationen zu durchsuchenden Klassen zu reduzieren.

Informationen zu diesem Vorgang

Das Produkt stellt eine konfigurierbare Filterfunktion bereit, mit der die Anzahl der Klassen, die auf Annotationen durchsucht werden, reduziert werden kann. Sie können vier Eigenschaften (oder Manifestattribute) verwenden, um die Module oder Java-Pakete anzugeben, die bei der Annotationsverarbeitung ignoriert werden sollen:

  • Ignore-Scanning-Archives
  • Ignore-Scanning-Packages
  • Include-Scanning-Archives
  • Include-Scanning-Packages

Die Eigenschaften können in der Datei amm.filter.properties unter Stammverzeichnis_des_Anwendungsservers/properties oder als Manifestattribute angegeben werden.

Sie können außerdem die folgenden Systemeigenschaften verwenden, um die zu ignorierenden Module oder Java-Pakete anzugeben:
  • com.ibm.ws.amm.scan.context.filter.archives
  • com.ibm.ws.amm.scan.context.filter.packages
  • com.ibm.ws.amm.scan.context.include.archives
  • com.ibm.ws.amm.scan.context.include.packages

Verwenden Sie diese Optionen, um die auf Annotationen zu durchsuchenden Klassen einzugrenzen. Die Leistung steigt proportional zur Anzahl der entfernten Klassen. Schließen Sie alle Klassen von der Verarbeitung aus, die keine Annotationsdaten enthalten.

In der Regel werden vollständige Archive gefiltert. Häufig werden JAR-Dienstprogrammdateien herausgefiltert, die in einer WAR-Datei enthalten sind, die keine Annotationsdaten enthält.

Die Eigenschaften "Ignore-Scanning-Archives" und "Ignore-Scanning-Packages" werden verwendet, um die Teile der Klassen anzugeben, die bei der Annotationsverarbeitung ignoriert werden sollen. Alle mit Ignore-Scanning-Archives angegebenen Klassen in Archiven werden bei der Annotationsverarbeitung übersprungen. Alle mit "Ignore-Scanning-Packages" angegebenen Klassen in Paketen werden ebenfalls bei der Annotationsverarbeitung übersprungen.

Die Eigenschaften "Include-Scanning-Archives" und "Include-Scanning-Packages" werden verwendet, um die Teile der Klassen anzugeben, die bei der Annotationsverarbeitung durchsucht werden sollen. Wird eine dieser Eigenschaften angegeben, werden nur die enthaltenen Klassen durchsucht. Alle anderen Klassen werden ignoriert.

Die Datei amm.filter.properties unter Stammverzeichnis_des_Anwendungsservers/properties enthält einen Standardwertsatz für "Ignore-Scanning-Archives" und "Ignore-Scanning-Packages".
Anmerkung: Für "Include-Scanning-Archives" und "Include-Scanning-Packages" sind keine Standardwerte angegeben.

Mit den Eigenschaftswerten können Sie den Geltungsbereich für die Annotationsverarbeitung grob und genau steuern. Dabei ermöglicht "Ignore-Scanning-Archives" eine gröbere Steuerung als "Ignore-Scanning-Packages". Ebenso ermöglicht "Include-Scanning-Archives" eine gröbere Steuerung als "Include-Scanning-Packages".

Die Syntax für alle vier Eigenschaften folgt der CSV-Konvention. Platzhalterzeichen und reguläre Ausdrücke sind nicht zulässig und für Werte muss die Groß-/Kleinschreibung beachtet werden.

Die gleichzeitige Verwendung der Ein- und Ausschlusseigenschaften ist zwar ungewöhnlich, wird aber unterstützt. Wird eine Einschlusseigenschaft mit einer Ausschlusseigenschaft angegeben, werden Klassen für die Verarbeitung ausgewählt, wenn sie ein- und nicht ausgeschlossen sind. Werden "Ignore-Scanning-Archives" und "Include-Scanning-Archives" angegeben, wird eine Klasse während der Annotationsverarbeitung nur durchsucht, wenn sich die Klasse in einem Archiv befindet, das mit "Include-Scanning-Archives" angegeben wurde, und nicht in einem mit "Ignore-Scanning-Archives" angegebenen Archiv. Werden "Ignore-Scanning-Packages" und "Include-Scanning-Packages" angegeben, wird eine Klasse während der Annotationsverarbeitung ebenfalls nur durchsucht, wenn sich die Klasse in einem Paket befindet, das mit "Include-Scanning-Packages" angegeben wurde, und nicht in einem mit "Ignore-Scanning-Packages" angegebenen Archiv.

Mit der Datei amm.filter.properties angegebene Optionen gelten global für das Profil. Alle Anwendungen, auf die Prozesse stoßen, die von diesem Profil gestartet wurden, verwenden die angegebenen Optionen. Als Systemeigenschaften angegebene Optionen gelten global für den Prozess, für den die Eigenschaften festgelegt wurden. Alle Anwendungen, auf die der Prozess stößt, verwenden die angegebenen Optionen.

Manifestattribute können in drei unterschiedlichen Bereichen angegeben werden:
  • Anwendung (EAR-Datei)
  • Modul (WAR-/RAR-/JAR-Datei)
  • Webfragment (JAR-Datei)
In allen Fällen gilt ein Manifestattribut für alle eingeschlossenen Bereiche. Ein als Anwendungsattribut (EAR-Datei) angegebenes Manifestattribut gilt für das Durchsuchen auf Annotationen für alle Modularchiv- und Fragment-JAR-Dateien. Ein als Modul (WAR-/RAR-/JAR-Datei) angegebenes Manifestattribut gilt für Annotationen im Modul. Ein als Webfragment (JAR-Datei) angegebenes Manifestattribut gilt für dieses Webfragment.

In mehreren Bereichen angegebene Manifestattribute sind kumulativ. Mit der Datei amm.filter.properties angegebene Optionen, Systemeigenschaften und Manifestattribute sind kumulativ.

Der Standardwertesatz kann von einem Administrator geändert oder mit einem der folgenden Schritte erweitert werden.

Vorgehensweise

Nächste Schritte

Installieren Sie die Anwendung erneut. Wenn die Implementierung weiterhin langsam ist, geben Sie weitere zu ignorierende Module und Java-Pakete an.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=trun_app_reduce_annot
Dateiname:trun_app_reduce_annot.html