metodoinvocador
Rendimiento:
1. Habilite FastInfoset (conjunto de información rápida)
El rendimiento del servicio web realmente no es halagador. Debido a que el rendimiento del servicio web no pudo aumentar, se realizaron algunas optimizaciones de rendimiento en el servicio web y se utilizó FastInfoset. El efecto fue obvio para la transmisión de datos de gran tamaño en condiciones extremas, el rendimiento aumentó en un 60%. costos y costos de análisis xml.
Cxf proporciona un mecanismo de negociación FastInfoset. Para la clase de implementación, consulte org.apache.cxf.feature.FastInfosetFeature. Habilite la siguiente configuración en el bus:
Force=false significa que el servidor y el cliente negociarán durante la primera comunicación (marcando el campo Aceptar del encabezado HTTP estándar , el valor es Tipo MIME aplicación/fastinfoset) Si se debe habilitar la compatibilidad con FastInfoset, si el cliente no lo admite, FastInfoset no se habilitará.
Necesita agregar dependencias en pom:
< alcance>compilar
Referencia de FastInfoset:/developer/technicalArticles/xml/fastinfoset/
Configuración del lado del cliente y del servicio
2. Habilite el soporte de compresión gzip
Si el cliente y el servidor usan compresión Gzip también se basa en mon.gzip.GZIPFeature">
El documento oficial especifica si se debe configurar org.apache.cxf.transport.mon .logging.Slf4jLogger
4. Habilite el inicio de sesión en la prueba
Agregue
Adicional:
1. Cómo personalizar el código de retorno:
Después de que la solicitud encuentra una excepción durante el procesamiento en el servicio, el método handleFault de todos los interceptores en la cadena de solicitud Se llamará. Consulte PhaseInterceptorChain # desenrolle y luego determine si la solicitud es una solicitud unidireccional. De lo contrario, cree una cadena de solicitud de excepción, cree un objeto de mensaje de excepción y llame al método handleMessage en la cadena de solicitud de excepción (. referencia: AbstractFaultChainInitiatorObserver)
JAXWSMethodInvoker reenvía la solicitud SOAP para especificar el método del objeto. Si el procesamiento de la solicitud falla, llame al método updateHeader y coloque el encabezado SOAP durante la solicitud en el encabezado de retorno.
Sin embargo, a diferencia de heredar JAXWSMethodInvoker, se soluciona el problema de devolver el encabezado SOAP al cliente al borrar una excepción, porque JAXWSMethodInvoker no utiliza un mecanismo de inyección (JaxWsServerFactoryBean#createInvoker) y no tiene una cadena. Cuando ocurre una excepción, estos interceptores lo harán. manejar la solicitud de devolución:
configurar [ServerPolicyOutFaultInterceptor]
preparar-enviar [MessageSenderInterceptor, Soap11FaultOutInterceptor]
transmitir previamente [LoggingOutInterceptor, StaxOutInterceptor]
protocolo previo [WebFaultOutInterceptor]
escribir [SoapOutInterceptor]
Clase de inicialización del interceptor OutFaultChainInitiatorObserver
Podemos agregar el interceptor SoapHeaderOutFilterInterceptor para limpiar el encabezado SOAP en la cadena de excepción y límpielo en el sistema. Hay un problema con la información en el encabezado del jabón cuando hay una excepción.
El código de estado de error se devuelve y está codificado al ejecutar el interceptor Soap11FaultOutInterceptor.
message.put(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
Para tener un código de error en los datos devueltos, debe ir seguido de Soap11FaultOutInterceptor Agregar un interceptor
2. Al probar el proyecto, encontré un mensaje de error de encabezado LOC no válido (firma incorrecta). Este problema se debe a que el paquete jar está dañado. está en la ruta de compilación, aún sucede. Si loadClass falla, limpie los archivos jar en el directorio del almacén local de maven y modifique el pom (por ejemplo, agregue una línea en blanco) para permitir que m2e se recargue.
3. Hay una característica muy buena en Cxf, que admite javascript para acceder al servicio web SOAP y el cliente para acceder a la pila