Procedimientos recomendados para el rendimiento de los servicios web
En este tema se ofrece información sobre los métodos recomendados para el rendimiento de las aplicaciones de servicios web.
Los servicios web se desarrollan y despliegan siguiendo los estándares proporcionados por la especificación de servicios web para Java™ EE (Java Platform, Enterprise Edition) y los modelos de programación JAX-WS (Java API for XML-Based Web Services) y JAXB (Java Architecture for XML Binding), y es el mecanismo utilizado para acceder a un servicio web. Se explican las consideraciones de rendimiento de los servicios web soportados por esta especificación.
Al desarrollar o desplegar un servicio web, se necesitan varios artefactos, incluido un archivo WSDL (Web Services Description Language). El archivo WSDL describe el formato y la sintaxis de mensajes SOAP de entrada y de salida de servicios web. Cuando se implementa un servicio web en el tiempo de ejecución de WebSphere Application Server, el mensaje SOAP se traduce a partir de la solicitud Java EE. La respuesta basada en Java EE se vuelve a traducir en un mensaje SOAP.
La consideración de rendimiento de mayor relevancia es la traducción entre el mensaje SOAP basado en XML y el objeto Java. El rendimiento es alto para la implementación de un servicio web en WebSphere Application Server; sin embargo, se puede mejorar el diseño, despliegue y ajuste de la aplicación. Consulte la información acerca de cómo supervisar el rendimiento de aplicaciones de servicios web para obtener más información sobre el análisis y el ajuste de servicios web.
Si utiliza una aplicación de servicios web que se ha desarrollado para una versión de WebSphere Application Server anterior a la Versión 6, puede lograr un mayor rendimiento ejecutando el mandato wsdeploy. El mandato wsdeploy vuelve a generar las clases de artefactos de servicios web para aumentar el rendimiento de serialización y deserialización.
El mandato wsdeploy está soportado por las aplicaciones JAX-RPC (Java API for XML-based RPC). El modelo de programación de JAX-WS (Java API for XML-Based Web Services) implementado por el servidor de aplicaciones no soporta el mandato wsdeploy. Si la aplicación de servicios web sólo contiene puntos finales JAX-WS, no es necesario que ejecute el mandato wsdeploy, ya que este mandato sólo se utiliza para procesar puntos finales JAX-RPC.
Consideraciones básicas para una aplicación de servicios web de alto rendimiento
- Reduzca las solicitudes de servicios web mediante unas pocas API altamente funcionales, en lugar de varias API sencillas.
- Diseñe la interfaz del archivo WSDL para que limite el tamaño y la complejidad de los mensajes SOAP.
- Utilice el argumento de estilo documento/literal al generar el archivo WSDL.
- Aproveche las posibilidades de colocación en memoria caché ofrecidas por WebSphere Application Server.
- Pruebe el rendimiento del servicio web.
Optimizar el rendimiento de los servicios web JAX-WS para WebSphere Application Server
Según el escenario de utilización de servicios web, puede utilizar las siguientes propiedades personalizadas de JVM para optimizar el rendimiento de los servicios web JAX-WS. Después de cambiar los valores de estas propiedades personalizadas de JVM, debe reiniciar WebSphere Application Server para que los cambios entren en vigor.
- En WebSphere Application Server 8.5.5.2 o
posterior, utilice la propiedad personalizada siguiente para la optimización del rendimiento de JAXB:
- com.ibm.websphere.webservices.jaxwsOptimizeLevelOne
- Configure esta propiedad personalizada como true para activar la optimización del rendimiento de JAX-WS en el nivel uno.
- El valor predeterminado es false.
Nota: Cuando esta propiedad personalizada está habilitada, parte del comportamiento no correspondiente a la especificación JAXB puede cambiar. Inhabilite la propiedad si la aplicación depende de este tipo de comportamiento no correspondiente a la especificación que hace que la aplicación no se ejecute satisfactoriamente.Nota: Es posible que el orden de los códigos XML de un mensaje SOAP sea diferente de las versiones anteriores.
- En WebSphere Application Server 8.5.5.0 o
posterior, utilice las propiedades personalizadas siguientes para la optimización del rendimiento de los manejadores globales del motor de JAX-WS. Tenga
cuidado cuando habilite las siguientes propiedades personalizadas. De lo contrario, la función de los servicios web correspondiente no funcionará. Además,
las siguientes propiedades de JVM no tendrán impacto sobre los manejadores JAX-WS definidos por el usuario.
- com.ibm.ws.websvcs.disableWSDMHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función WSDM (Web Services Distributed Management). El valor predeterminado es false.
- com.ibm.ws.websvcs.disableWSSecurityHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función WS-Security. El valor predeterminado es false.
- com.ibm.ws.websvcs.disableWSTXHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función WS-Transaction. El valor predeterminado es false.
- com.ibm.ws.websvcs.disableWSRMHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función WS-RM. El valor predeterminado es false.
- com.ibm.ws.websvcs.disablePMIHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función de recopilación de datos de PMI. El valor predeterminado es false.
- com.ibm.ws.websvcs.disablePMIRMHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función de recopilación de datos de PMI para la función WS-RM. El valor predeterminado es false.
- com.ibm.ws.websvcs.disableAddressingHandler
- Utilice esta propiedad para controlar si deben inhabilitarse los manejadores de motor JAX-WS de servicios web para la función WS-Addressing. El valor predeterminado es false.
- com.ibm.ws.websvcs.disableDefaultGlobalHandlers
- Utilice esta propiedad para controlar si deben inhabilitarse todos los manejadores de motor JAX-WS de servicios web. Si esta propiedad se ha
configurado como true, altera temporalmente el valor de las siguientes propiedades personalizadas y establece sus valores en 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
- El valor predeterminado de esta propiedad personalizada es false.
Características de rendimiento adicionales de los servicios web que pueden mejorarse
- Optimizaciones en proceso para que los servicios web optimicen la vía de acceso de comunicación entre una aplicación cliente de servicios web y un contenedor web que se encuentren en el mismo proceso de servidor de aplicaciones. Para obtener más detalles sobre la habilitación de esta característica, consulte la información acerca de la comunicación optimizada del cliente de servicios web con el contenedor web.
- El acceso a los servicios web a través de varios protocolos de transporte amplía las posibilidades de JAX-RPC (Java API for XML-based Remote Procedure Call) existentes para dar soporte a los enlaces que no sean SOAP como RMI/IIOP y JMS. Estos transportes alternativos pueden mejorar los aspectos relacionados con el rendimiento y la calidad de servicio de los servicios web. Para obtener más información, consulte el tema acerca de RMI-IIOP mediante JAX-RPC.
- SAAJ (SOAP with Attachments API for
Java)
Versión 1.2 proporciona un modelo de programación para los servicios
web relativos a JAX-RPC. La API de SAAJ proporciona características para crear y procesar solicitudes SOAP utilizando una API XML. SAAJ da soporte al análisis JIT (Just-In-Time) y a otros algoritmos internos. Si desea más información sobre la programación de servicios web o
SAAJ, consulte SAAJ (SOAP with Attachments API for
Java).
SAAJ 1.3 proporciona soporte para los servicios web desarrollados e implementados que están basados en el modelo de programación JAX-WS (Java API for XML Web Services).
- Las herramientas de servicios web generan deserializadores personalizados para todos los beans JAX-RPC. Si vuelve a desplegar una aplicación V5.x en el tiempo de ejecución V6 puede reducir el tiempo de proceso de los mensajes de gran tamaño.
- El tiempo de serialización y deserialización se ha mejorado para colocar en memoria caché los serializadores y deserializadores usados con frecuencia. Esto puede reducir el tiempo de proceso de los mensajes de gran tamaño.
IBM® proporciona una abundante documentación y los procedimientos recomendados para el diseño y desarrollo de aplicaciones de servicios, que facilitan más información sobre estos aspectos y muchos más.