¿El servicio web implementado a través de jax ws es multiproceso?

Escribí un servicio web usando la implementación de spring, cxf y jax ws y tengo una pregunta básica sobre WS. ¿Cómo maneja un punto final de servicio web las solicitudes simultáneas? ¿Crea un nuevo hilo para cada solicitud similar a un servlet o es un modelo de un solo hilo? Como esperamos un gran volumen para cada servicio web, ¿hay alguna diferencia en deslizar WSDL a múltiples WSDL para tener diferentes puntos finales?

preguntado el 10 de marzo de 12 a las 05:03

3 Respuestas

El servicio web, por supuesto, está alojado en un servidor web (como Glassfish, por ejemplo), que es multiproceso cuando recibe múltiples solicitudes simultáneas.

respondido 10 mar '12, 11:03

Desde la perspectiva tanto de su cliente como de su servicio, no existe el "multiproceso". Su cliente invoca una solicitud y obtiene una respuesta (posiblemente una respuesta de falla). Su servidor recibe una solicitud y los servicios que la solicitan. Período.

La forma en que se envía la solicitud es un detalle de implementación.

Y el WSDL es simplemente un "contrato". El servicio "publica" qué operaciones admite y qué tipos de datos utiliza con el WSDL; el cliente empaqueta y descomprime sus mensajes SOAP de solicitud y respuesta en consecuencia. Pero un WSDL no juega un papel directo en ninguna invocación de servicio web.

respondido 10 mar '12, 05:03

Gracias por la respuesta. Mencionaste que el receptor del servidor solicita y devuelve la respuesta. ¿Qué papel juega aquí un punto final para servir la respuesta? ¿Cómo maneja la solicitud concurrente? - Mr9

La situación con un punto final de servicio web es exactamente la misma que con un servlet JSP ... o cualquier otra solicitud / respuesta web. Desde la perspectiva de su servicio, no sabe ni le importa si el oyente envía su solicitud a un nuevo hilo, un nuevo proceso o una JVM completamente nueva. O si solo bloquea. Desde su perspectiva, no hay "multiproceso". Desde el del servidor perspectiva, sin embargo: sí, probablemente crea un nuevo hilo. Los detalles variarán de un servidor a otro (Tomcat vs JBoss vs WebSphere vs WebLogic, por ejemplo; todos podrían implementar sus despachadores de manera diferente). - paulsm4

@ paulsm4 Le agradecería si pudiera compartir un enlace de referencia para respaldar la información que compartió aquí. .He estado buscando algo que muestre el ciclo de vida del servicio web (como si pudiera encontrar fácilmente el ciclo de vida del bean de sesión sin estado en el tutorial de Oracle JEE5) pero no pude encontrar ninguno ... - petirrojo

Es tarde pero podría ayudar.

Endpoint.publish (Url, ServiceImplObj) publica un servicio web en una URL determinada. El no. de los subprocesos asignados para el manejo de solicitudes realmente está bajo el control de jvm porque esta es una implementación liviana que es manejada por jvm en sí.

Para una mejor aclaración, puede imprimir el nombre del hilo actual en el lado del servicio y puede ver que los hilos del servicio se asignan desde un grupo de hilos que es administrado por jvm.

[pool-1-thread-1]: Response[57]:
[pool-1-thread-5]: Response[58]:
[pool-1-thread-4]: Response[59]:
[pool-1-thread-3]: Response[60]:
[pool-1-thread-6]: Response[61]:
[pool-1-thread-6]: Response[62]:

Esto lo probé en jdk 1.6.0_35.

xjc -version xjc versión "JAXB 2.1.10 en JDK 6" Arquitectura JavaTM para implementación de referencia de enlace XML (JAXB), (compilación JAXB 2.1.10 en JDK 6)

Respondido el 12 de diciembre de 12 a las 16:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.