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.
- 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.
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.
- Anwendung (EAR-Datei)
- Modul (WAR-/RAR-/JAR-Datei)
- Webfragment (JAR-Datei)
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.