Bewährte Verfahren für die Leistungsoptimierung von Web-Services
Machen Sie sich mit den bewährten Verfahren für die Leistungsoptimierung von Web-Service-Anwendungen.
Web-Services werden basierend auf den Standards entwickelt und implementiert, die von der Spezifikation Web Services for Java™ 2 Platform, Enterprise Edition (Java EE) und den Programmiermodellen Java API for XML-Based Web Services (JAX-WS) und Java Architecture for XML Binding (JAXB) bereitgestellt werden, und sind der Mechanismus für den Zugriff auf einen Web-Service. Die Leistungshinweise zu den von dieser Spezifikation unterstützten Web-Services werden erläutert.
Wenn Sie einen Web-Service entwickeln, sind verschiedene Artefakte erforderlich. Eines davon ist eine WSDL-Datei (Web Services Description Language). Die WSDL-Datei beschreibt das Format und die Syntax der SOAP-Eingabe- und Ausgabenachrichten des Web-Service. Wenn ein Web-Service in die Laufzeitkomponente von WebSphere Application Server implementiert ist, wird die SOAP-Nachricht basierend auf der Java EE-Anforderung übersetzt. Die Java EE-basierte Antwort wird anschließend in eine SOAP-Nachricht zurück übersetzt.
Das wichtigste Leistungskriterium ist die Übersetzung der XML-basierten SOAP-Nachricht in das Java-Objekt und umgekehrt. Obwohl eine Web-Service-Implementierung in WebSphere Application Server bereits sehr leistungsstark ist, können Anwendungsdesign, -implementierung und -optimierung noch verbessert werden. Informationen zur Analyse und Optimierung von Web-Services finden Sie in der Dokumentation zur Überwachung der Leistung von Web-Service-Anwendungen.
Wenn Sie eine Web-Service-Anwendung verwenden, die für eine Vorversion von WebSphere Application Server 6 entwickelt wurde, können Sie mit dem Befehl wsdeploy den Durchsatz verbessern. Der Befehl wsdeploy generiert neue Web-Service-Artefaktklassen, um die Leistung bei der Serialisierung und Entserialisierung zu verbessern.
Der Befehl wsdeploy wird von JAX-RPC-Anwendungen (Java API for XML-based RPC) unterstützt. Das Programmiermodell Java API for XML-Based Web Services (JAX-WS), das vom Anwendungsserver implementiert wird, unterstützt den Befehl wsdeploy nicht. Wenn Ihre Web-Service-Anwendung nur JAX-WS-Endpunkte enthält, müssen Sie den Befehl wsdeploy nicht ausführen, da dieser Befehl nur zur Verarbeitung von JAX-RPC-Endpunkten verwendet wird.
Grundlegende Hinweise zu leistungsfähigen Web-Service-Anwendungen
- Verringern Sie die Web-Service-Anforderungen durch den Einsatz einiger multifunktionalen APIs anstelle mehrerer einfacher APIs.
- Gestalten Sie die WSDL-Dateischnittstelle so, dass Größe und Komplexität der SOAP-Nachrichten beschränkt wird.
- Verwenden Sie das Stilargument "document/literal" wenn Sie die WSDL-Datei generieren.
- Nutzen Sie die Caching-Funktionen, die für WebSphere Application Server angeboten werden.
- Testen Sie die Leistung Ihres Web-Service.
Leistung der JAX-WS-Web-Services für WebSphere Application Server optimieren
Abhängig vom Einsatzszenario für Ihre Web-Services können Sie die Leistung der JAX-WS-Web-Services mit folgenden angepassten JVM-Eigenschaften optimieren. Nachdem Sie die Werte dieser angepassten JVM-Eigenschaften geändert haben, muss WebSphere Application Server erneut gestartet werden, damit diese Änderungen in Kraft treten.
- Verwenden Sie in
WebSphere Application Server
8.5.5.2 oder höher folgende angepasste Eigenschaft zur JAXB-Leistungsoptimierung:
- com.ibm.websphere.webservices.jaxwsOptimizeLevelOne
- Konfigurieren Sie diese angepasste Eigenschaft mit dem Wert "true", um die JAX-WS-Leistungsoptimierung der Stufe eins zu aktivieren.
- Der Standardwert ist "false".
Anmerkung: Wenn diese angepasste Eigenschaft aktiviert ist, kann ein bestimmtes JAXB-Verhalten, das nicht Teil der Spezifikation ist, geändert werden. Wenn Ihre Anwendung von dieser Art Verhalten, das nicht Teil der Spezifikation ist, abhängig ist und wenn Sie feststellen, dass die Anwendung aus diesem Grund nicht erfolgreich ausgeführt werden kann, müssen Sie diese Eigenschaft inaktivieren.Anmerkung: Möglicherweise werden Sie feststellen, dass die Reihenfolge der XML-Tags in einer SOAP-Nachricht von der Reihenfolge in der vorherigen Version abweicht.
- Verwenden Sie in WebSphere Application Server
8.5.5.0 oder höher die folgenden angepassten
Eigenschaften zur Leistungsoptimierung der globalen JAX-WS-Engine-Handler.
Gehen Sie sorgfältig vor, wenn Sie die folgenden angepassten
Eigenschaften aktivieren.
Andernfalls können die entsprechenden Web-Service-Funktionen nicht ausgeführt werden.
Die folgenden JVM-Eigenschaften haben außerdem keine Auswirkungen für
benutzerdefinierte JAX-WS-Handler.
- com.ibm.ws.websvcs.disableWSDMHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die WSDM-Funktion (Web Services Distributed Management) inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disableWSSecurityHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die WS-Security-Funktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disableWSTXHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die WS-Transaction-Funktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disableWSRMHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die WS-RM-Funktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disablePMIHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die PMI-Datenerfassungsfunktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disablePMIRMHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die PMI-Datenerfassung für die WS-RM-Funktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disableAddressingHandler
- Verwenden Sie diese Eigenschaft, um zu steuern, ob JAX-WS-Engine-Handler von Web-Services für die WS-Addressing-Funktion inaktiviert werden sollen. Der Standardwert ist "false".
- com.ibm.ws.websvcs.disableDefaultGlobalHandlers
- Verwenden Sie diese Eigenschaft, um zu steuern, ob alle
Standard-JAX-WS-Engine-Handler von Web-Services inaktiviert werden sollen.
Wenn diese Eigenschaft mit dem Wert "true" konfiguriert wird,
überschreibt sie die Werte der folgenden angepassten Eigenschaften und setzt diese auf "true".
- com.ibm.ws.websvcs.disableWSDMHandler
- com.ibm.ws.websvcs.disableWSSecurityHandler
- com.ibm.ws.websvcs.disableWSTXHandler
- com.ibm.ws.websvcs.disableWSRMHandler
- com.ibm.ws.websvcs.disablePMIHandler
- com.ibm.ws.websvcs.disablePMIRMHandler
- com.ibm.ws.websvcs.disableAddressingHandler
- Der Standardwert für diese angepasste Eigenschaft ist "false".
Zusätzlich verfügbare Leistungsfeatures für Web-Services
- Prozessinterne Optimierung von Web-Services für einen optimierten Kommunikationspfad zwischen einer Web-Service-Clientanwendung und einem Web-Container, die beide im selben Anwendungsserverprozess angeordnet sind. Einzelheiten zum Aktivieren dieses Features finden Sie in den Informationen zur optimierten Kommunikation zwischen Web-Service-Clients und Web-Containern.
- Der Zugriff auf Web-Services über mehrere Transportprotokolle ergänzt die vorhandenen JAX-RPC-Funktionen (Java API for XML-based Remote Procedure Call) bezüglich der Unterstützung von SOAP-unabhängigen Bindungen wie RMI/IIOP und JMS. Diese alternativen Transportprotokolle können Leistung und Servicequalität von Web-Services verbessern. Ausführlichere Informationen finden Sie in der Dokumentation zu RMI-IIOP mit JAX-RPC.
- SOAP with Attachments API for Java (SAAJ) Version 1.2 ist ein Programmiermodell für JAX-RPC-Web-Services.
Die SAAJ-API stellt Features zum Erstellen und Verarbeiten von SOAP-Anforderungen
über eine XML-API bereit. SAAJ unterstützt eine JIT-Syntaxanalyse (Just-in-Time) und andere interne Algorithmen. Informationen
zur SAAJ- oder Web-Service-Programmierung finden Sie in der Dokumentation zu
SOAP with Attachments API for Java.
SAAJ 1.3 unterstützt Web-Services, die auf der Basis des JAX-WS-Programmiermodells (Java API for XML Web Services) entwickelt und implementiert werden.
- Die Web-Service-Tools generieren eigene Entserialisierungsprogramme mit einer höheren Leistung für alle JAX-RPC-Beans. Durch eine erneute Implementierung von Anwendungen der Version 5.x in der Laufzeitumgebung von Version 6 kann die Verarbeitungszeit für umfangreiche Nachrichten verringert werden.
- In der Laufzeitumgebung für Serialisierung und Entserialisierung können häufig verwendete Serialisierungs- und Entserialisierungsprogramme zwischengespeichert werden. Dies kann die Verarbeitungszeit für umfangreiche Nachrichten verringern.
IBM® stellt eine umfangreiche Dokumentation und Beschreibungen der empfohlenen Methoden für das Design und die Entwicklung von Web-Service-Anwendungen bereit, in denen diese Punkte und vieles mehr ausführlich erläutert werden.