29/09/2004, 10:03
|
| | | Fecha de Ingreso: enero-2002 Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 23 años Puntos: 1 | |
Hola Machine80, veamos si puedo explicarte sin que nos enredemos ambos ....
Los servlets crean una SOLA INSTANCIA, y esta se dedica a atender a todos los request/response que reciba. Por lo tanto por más que tu quieras no podrás tener más de una instancia para un servlet, ya que el WebContainer se encargará de prevenir ello.
Si tu necesitas tener dos instancias de serlvets y que sean distintas, entonces, crea 2 servlets, cada uno con diferente nombre. Para que así sean clases distintas y por lo tanto serán instancias distintas.
Los EJB efectivamente puede manejar la sesion, pero creo que aquí te estas confundiendo con el nombre, porque los "EJB Session" pueden ser de dos tipos:
SIN ESTADO (stateless) es decir que no recuerdan los datos entre request y request, y CON ESTADO (statefull) es decir que si recuerdan los datos entre request y request. Por lo tanto decir que utilizas EJB Session, no significa que trabajen con la sesión, ni que recuerden los datos necesariamente, porque esto dependerá del tipo de EJB Session que utilices.
Sólo los EJB Session Satefull pueden mantener datos en sesión y recordarlos, sin embargo, la recomendación del estándar JAVA están en dejar de usar los EJB Session Staefull y utilizar el HttpSession. Ya que, es mucho más pesado y complicado manejar la sesión en el EJB Container con los EJB Session Statefull, por lo que es mejor utilizar el HTTPSESSION tradicional de los WebContainer.
Las instancias de EJB Session son manejadas por el EJB Container, por lo tanto tu no tienes el control de crear y/o utilizar instancias particulares. Será el EJB Container el que te dará una referencia a una instancia libre en ese momento y que pueda atenderte. Entonces crear una instancia de un mismo EJB, depende del EJB Container, y sólo se dará si el acceso concurrente a este lo exige y el pool configurado para el EJB lo permite.
Ahora, si nuevamente aquí quieres tener otra instancia de un EJB, pues no depende de tí, sino del EJBContainer, que hacer entonces? pues lo mismo que para los servlets,crea otro EJB que sea llamado desde tu sengundo servlet, y así vas a tener con toda seguridad DOS CAMINOS distintos.
Recuerda que no estas en un entorno libre de crear instancias y destruirlas, sino que estas supeditado a los WebContainer y EJB Container, que entre otras cosas ellos tiene el control de crear, destruir, activar, pasivar, ejecutar los objetos JAVA (servlets o EJBs) dentro de su entorno.
Espero haya quedado más claro?, si tienes alguno duda hazla ...
__________________ Saludos,
H@C.. |