Se pueden ejecutar hilos con JWS????

Hola a todos, quisiera saber si es posible ejecutar un hilo en un webservice con JWS el cual debe regresar un conjunto de datos desde un stored procedure de oracle, si es asi comentenme para enviarles lo que estoy intentando hacer

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Web services asincrono?

Hace poco comentaban algo acerca de WS asíncronos, no sé si sea lo que estás buscando o si efectivamente necesitas despertar hilos dentro de un WS. Si no es así, aunque despiertes mil hilos pues de todas formas deberías de esperar a que el WS te regrese el resultado de tu SP

Esta es la entrada

Pues realmente apenas me

Pues realmente apenas me estoy adentrando a esto de los webservices y la idea es implementar un solo hilo, es la primera vez que hacemos esto en donde laboro y la idea del webservice es mandarle una cadena la cual la descompone y asi ejecuta un SP y regresa todo en xml, hasta ahi va bien, ahora estamos en el dilema si ese unico procedimiento del web service seria bueno implementarle un hilo para que no vaya a existir "mezcolanza" de datos a la hora de que varios clientes consuman el webservice al mismo tiempo. Ese mismo webservice lo hice en aplicacion de consola con un hilo y jala bien, pero en el webservice no me regresa nada :(

Imagen de ezamudio

Arquitectura

Si vas a publicar un web service, necesitas ver algo de arquitectura de aplicaciones de servidor, o al menos entender cómo funcionan los hilos, porque eso de seria bueno implementarle un hilo suena como que no tienes idea de para qué son o cómo funcionan. Un web service necesariamente debe ser multi-hilos, a menos que puedas estar 100% seguro que sólo habrá un cliente invocándolo a la vez, pero en ese caso mejor busca otro tipo de interfaz.

Pero que sea multi-hilo no quiere decir que tú tienes que crear hilos a mano. Si tu servicio estará en un contenedor, o incluso si es una aplicación stand-alone, seguramente habrá una interfaz HTTP (apache, jetty, jboss, tomcat, etc) que recibe las peticiones y las pasa a tu servicio. Ahí es donde están los hilos: si dos clientes invocan el servicio al mismo tiempo, el servidor HTTP recibe ambas peticiones y hará la invocación a tu servicio desde dos hilos distintos.

Si tu servicio no guarda estado no debes tener problema. Guardar estado significa que tengas variables de instancia donde almacenas datos relacionados con la petición que estás procesando. Por ejemplo si tengo este objeto:

public class Mala {
  private int suma = 0;
  public int suma(int p1, int p2) {
    //Este es el servicio
    suma = p1 + p2;
    System.out.printf("%d + %d = %d%n", p1, p2, suma);
    return suma;
  }
}

Ese código está mal. Si le haces pruebas unitarias y corren en un solo hilo, te van a salir bien. Pero luego lo publicas y resulta que recibes quejas de que a veces 2+2 te devuelve 5. ¿Por qué? Pues porque hay un solo objeto de esta clase, despachando todas las invocaciones del servicio. Y si en un hilo se ejecuta suma(2,2) pero al mismo tiempo en otro hilo se ejecuta suma(2,3), el resultado puede salir batido:

- El hilo1 almacena 2+2 en la variable suma
- El hilo2 almacena 2+3 en la variable suma, sobreescribiendo el 4 que se tenía almacenado
- El hilo1 devuelve el resultado: 5
- El hilo2 devuelve el resultado: 5

En este caso, la solución consiste simplemente en que suma sea una variable local, declarada dentro del método suma(int,int). De este modo, cada hilo tiene su propia copia de esa variable y no hay "mezcolanza de datos" como dices.

Si vas a invocar un SP, entonces el SP tampoco debe guardar estado (por ejemplo que guardas un dato en una tabla que tiene un solo registro).

Gracias

Ok muchas gracias por sus atenciones =D