Java - Ingeniero Tecnico Infomatico

 
Vista:

Ingeniero Tecnico Infomatico

Publicado por Jose Antonio (2 intervenciones) el 25/01/2007 16:38:57
Hola a todos,
tengo un grave problema con las sesiones java. Os explico:

Supongo que será que no entiendo el funcionamiento ya que hago lo que se supone que se tiene que hacer pero se pierde la sesion.

Trabajo en banca y necesito enlazar la pagina de banca con una aplicacion externa. En el entorno de desarrollo de la empresa y enlazando con el entorno de desarrollo de la aplicacion externa funciona, pero cuando se suben ambos a la misma maquina(la de preproduccion) y se ponen cada uno en un weblogic distinto siendo un servidor balanceado y mandando en alguna ocasion las peticiones por una rama y en otra ocasion por la otra no funciona.

Antes de nada decir que el problema esta en que cuando se abre la aplicacion externa lo hace en un navegador nuevo. Y entre medio de banca y la AE(aplicacion externa) existe un servlet, que es un jsp, que está en banca y se encarga de montar las url's necesarias para la llamada a esta AE. Este Servlet existe ya que lo que se pretende es conservar ambas sesiones la de banca y la de la AE activas, pero en el momento en que se llama a la AE la sesion de banca se anula.

Lo que yo hago es:

Desde el menú de banca llamo al servlet y le añadido a la url con un punto y coma la jsessionid, esto quizas no sea necesario ya que todo esta en banca y en el mismo weblogic pero funciona.

El servlet mediante un parámetro reconoce la pagina a la que debe ir y puesto que la aplicacion externa no tiene una tecnología que acepte sesiones le paso el jsessionid en un parámetro que ellos recogen y de nuevo montan una url añadiendo de la misma manera que antes la jsessionid.

Cuando ellos nos llaman a nosotros la sesion de banca ya ha caducado y no conseguimos mantener la sesion de banca activa, es más, la sesion de banca caduca en el momento en el que se llama a esta aplicación externa, esto ocurre en el entorno de preproduccion.

El entorno de preproduccion esta compuesto de dos apaches 1.3 uno para cada rama,
y a su vez en cada rama tiene otro apache 1.3 y cada uno de estos apunta a su vez a dos weblogics y cada uno de estos contiene uno la banca y el otro la AE. Explico esto por si el problema fuera esta arquitectura que impide el mantenimiento de las sesiones.

Lo primero que hago es un HttpSession hssesion=request.getSession(true), de tal forma que si existe la sesion la recoge y sino crea una nueva, pero no sirve que cree una nueva por lo que tambien prove a poner ese booleano a false para que devuelva un null en el caso de que no exista una sesion valida.

Lo mas gracioso es que aun poniendo este booleano a false hago una comprobacion para ver si el objeto hsSesion esta a null pero me dice que no y si muestro el jsessionid efectivamente me da el que se creo inicialmente en banca pero cuando le pregunto hsSesion.isNew() me dice que si es nueva y no me redirecciona correctamente y claro teniendo en cuenta que desde el momento en que dio al enlace inicialmente la sesion ya caduco y no entiendo porque ocurre esto.

Si alguien me puede ayudar a resolver este problema me sacaría de un apuro muy grande que al parecer no tiene una solucion facil.

Gracias de antemano a cualquiera que me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con sesiones java

Publicado por Jose Antonio (2 intervenciones) el 25/01/2007 16:40:57
Hola a todos,
tengo un grave problema con las sesiones java. Os explico:

Supongo que será que no entiendo el funcionamiento ya que hago lo que se supone que se tiene que hacer pero se pierde la sesion.

Trabajo en banca y necesito enlazar la pagina de banca con una aplicacion externa. En el entorno de desarrollo de la empresa y enlazando con el entorno de desarrollo de la aplicacion externa funciona, pero cuando se suben ambos a la misma maquina(la de preproduccion) y se ponen cada uno en un weblogic distinto siendo un servidor balanceado y mandando en alguna ocasion las peticiones por una rama y en otra ocasion por la otra no funciona.

Antes de nada decir que el problema esta en que cuando se abre la aplicacion externa lo hace en un navegador nuevo. Y entre medio de banca y la AE(aplicacion externa) existe un servlet, que es un jsp, que está en banca y se encarga de montar las url's necesarias para la llamada a esta AE. Este Servlet existe ya que lo que se pretende es conservar ambas sesiones la de banca y la de la AE activas, pero en el momento en que se llama a la AE la sesion de banca se anula.

Lo que yo hago es:

Desde el menú de banca llamo al servlet y le añadido a la url con un punto y coma la jsessionid, esto quizas no sea necesario ya que todo esta en banca y en el mismo weblogic pero funciona.

El servlet mediante un parámetro reconoce la pagina a la que debe ir y puesto que la aplicacion externa no tiene una tecnología que acepte sesiones le paso el jsessionid en un parámetro que ellos recogen y de nuevo montan una url añadiendo de la misma manera que antes la jsessionid.

Cuando ellos nos llaman a nosotros la sesion de banca ya ha caducado y no conseguimos mantener la sesion de banca activa, es más, la sesion de banca caduca en el momento en el que se llama a esta aplicación externa, esto ocurre en el entorno de preproduccion.

El entorno de preproduccion esta compuesto de dos apaches 1.3 uno para cada rama,
y a su vez en cada rama tiene otro apache 1.3 y cada uno de estos apunta a su vez a dos weblogics y cada uno de estos contiene uno la banca y el otro la AE. Explico esto por si el problema fuera esta arquitectura que impide el mantenimiento de las sesiones.

Lo primero que hago es un HttpSession hssesion=request.getSession(true), de tal forma que si existe la sesion la recoge y sino crea una nueva, pero no sirve que cree una nueva por lo que tambien prove a poner ese booleano a false para que devuelva un null en el caso de que no exista una sesion valida.

Lo mas gracioso es que aun poniendo este booleano a false hago una comprobacion para ver si el objeto hsSesion esta a null pero me dice que no y si muestro el jsessionid efectivamente me da el que se creo inicialmente en banca pero cuando le pregunto hsSesion.isNew() me dice que si es nueva y no me redirecciona correctamente y claro teniendo en cuenta que desde el momento en que dio al enlace inicialmente la sesion ya caduco y no entiendo porque ocurre esto.

Si alguien me puede ayudar a resolver este problema me sacaría de un apuro muy grande que al parecer no tiene una solucion facil.

Gracias de antemano a cualquiera que me pueda ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar