Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con sesiones

Estas en el tema de Problemas con sesiones en el foro de Java en Foros del Web. Hola. Estoy realizando un programa que usa Hibernate, Spring y Struts, mi problema es el siguiente: cuando pruebo el programa en el Tomcat accediendo desde ...
  #1 (permalink)  
Antiguo 24/04/2006, 03:00
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Problemas con sesiones

Hola.
Estoy realizando un programa que usa Hibernate, Spring y Struts, mi problema es el siguiente: cuando pruebo el programa en el Tomcat accediendo desde localhost:8080 todo funciona perfectamente, pero si accedo desde otra máquina poniendo a la máquina donde esta el Tomcat falla todo lo referente a las sesiones, me explico, en la aplicación guardo algunos datos de usuario y si esta logeado o no, si accedo desde localhost:8080 todo funciona perfectamente, pero si accedo desde otra máquina o desde la misma pero poniendo su dirección IP, los datos de las sesiones no se guardan, y se borran, por lo que la aplicación no funciona.
He probado varias configuraciones de Spring y de Struts pero con todas pasa lo mismo. Si alguien puede ayudarme, o al menos indicarme de donde podría venir el problema?
Muchas gracias.
  #2 (permalink)  
Antiguo 24/04/2006, 03:18
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Ni idea , pero a lo mejor esto te ayuda :

http://www.javahispano.org/articles....e.action?id=95

http://weblog.linkingpaths.com/index...ES-SPRING.html
  #3 (permalink)  
Antiguo 24/04/2006, 03:31
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Gracias por responder tan rapido.
Ya he visto esas páginas y no me ayudan mucho, ya que el problema esta en las sesiones que ofrece struts y el tomcat para guardar los datos en una aplicacion web para cada usuario. Pero no acabo de saber exactamente por que ocurre el fallo ni que debo cambiar.
De todas formas muchas gracias
  #4 (permalink)  
Antiguo 24/04/2006, 12:45
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Segun he podido comprobar el problema radica en que cuando accedo desde localhost:8080 la sesión que tiene un usuario se mantiene y puedo leer sus datos de forma correcta, pero cuando accedo desde otro ordenador, por ejemplo, poniendo 192.168.0.6:8080, cada vez que ejecuto una acción, para mostrar otra página, recoger datos,etc. la sesión que tenia el usuario se pierde y se crea una nueva. Alguien sabe a qué se debe esto?Ya no se donde mirar ni qué cambiar.

Gracias
  #5 (permalink)  
Antiguo 24/04/2006, 12:55
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Mirate http://www.programacion.com/java/tut...ets_basico/15/

a lo mejor necesitas hacer el seguimiento de sesión con Reescritura de URL

http://club.idecnet.com/~ccastano/femepa/201205.htm
Cita:
El método que asocia un ID de sesión con una URL es HttpServletResponse.encodeUrl. Si redirecionamos al usuario a otra página, el método para asociar el ID de sesión con la URL redirecionada se llama HttpServletResponse.encodeRedirectUrl.

Los métodos encodeUrl y encodeRedirectUrl deciden si las URL necesitan ser reescritas, y devolver la URL cambiada o sin cambiar. (Las reglas para las URLs y las URLs redireccionadas son diferentes, pero en general si el servidor detecta que el navegador soporta cookies, entonces la URL no se reescribirá).
La verdad es que sin el código , poco se me ocurre ...
  #6 (permalink)  
Antiguo 24/04/2006, 13:41
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
He estado leyendo los links que me has pasado, y la verdad es que lo hago todo bien, pero he probado el ejemplo del segundo link y cuando doy a F5 para refrescar la página entonces funciona perfectamente, pero cuando ejecuto uno de los botones, que deben realizar la misma acción, entonces crea una nueva sesión.

El enlace que refresco con F5 es:
192.168.0.6:8080/PROY/Login.do?action=LoginUser

y el boton que ejecuto es:
<a href="Login.do?action=LoginUser" onMouseOver="MM_swapImage('Image111','','<%=reques t.getContextPath()%>/img/mni_home02.png',1)" onMouseOut="MM_swapImgRestore()"><img src="<%=request.getContextPath()%>/img/mni_home01.png" name="Image111" width="20" height="43" border="0" id="Image1"></a>

No sé por que puede suceder esto, si se te ocurre algo?

Gracias por contestar.

PD. Estoy utilizado struts_tiles, por si puede ser el problema.
  #7 (permalink)  
Antiguo 24/04/2006, 13:44
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Se me olvidaba si se te ocurre donde podría estar el fallo y quiere el código, para verlo mas claro, me lo dices y lo subo, no lo he subido todabía por q no sé que esta mal, por lo que no se que subir.
  #8 (permalink)  
Antiguo 24/04/2006, 14:16
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Prueba con esto ...

resp seria : HttpServletResponse resp;
....
<a href="Login.do?action=<%=resp.encodeUrl('LoginUser')%>" onMouseOver="MM_swapImage('Image111','','<%=reques t.getContextPath()%>/img/mni_home02.png',1)" onMouseOut="MM_swapImgRestore()"><img src="<%=request.getContextPath()%>/img/mni_home01.png" name="Image111" width="20" height="43" border="0" id="Image1"></a>
  #9 (permalink)  
Antiguo 24/04/2006, 14:28
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Que va, tampoco funciona, la primera vez que lo ejecuto crea una sesión nueva, pero la segunda, cuando refresco la página, arroja una excepción, que es:

Action[/Login] does not contain method named LoginUser;jsessionid=7EA998FB164FB7AF2F9A35160AAA4 219
  #10 (permalink)  
Antiguo 24/04/2006, 14:33
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Perdón , creo que lo correcto seria :

<a href="<%=resp.encodeUrl('Login.do?action=LoginUser')%>"
  #11 (permalink)  
Antiguo 24/04/2006, 15:16
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Muchas gracias, de esta forma los botones si que funcionan, uff ya estaba desesperado no sabía que hacer. De todas formas, una pregunta, por qué así sí funciona y como estaba antes no funcionaba? y sobre todo hay alguna otra forma de hacerlo, me explico, ademas de los botones tambíen tengo un menú hecho mediante struts_menu y en él no puedo ponerl lo de <%=resp.encodeUrl('Login.do?action=LoginUser')%> , como lo hago?

Muchisimas gracias por todo
  #12 (permalink)  
Antiguo 24/04/2006, 17:11
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
El por que lo puedes leer en los links que te puse sobre seguimiento de sesión con Reescritura de URL .
Pues la verdad es que no te puedo ayudar con struts , me falta experiencia en ese campo , a ver si se anima algún otro compañero de el foro .

Salu2
  #13 (permalink)  
Antiguo 25/04/2006, 01:42
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Lo siento, realizé mal la pregunta, en los links ya leí que lo que hace es reescribir la url, mi pregunta se debe a que, según los links, esto es necesario para aquellos navegadores que no soportan cookies, bien, y mi duda es por qué no me funciona, ya que yo sí tengo activados los cookies en el navegador, en ambos, por que he probado tanto con firefox como con explorer, ademas de que desde localhost:8080 si que funciona.

De todas formas muchisimas gracias por resolverme tantas dudas.

PD. Sobre lo de struts mas o menos lo he arreglado, no es que sea muy elegante, pero de momento tira, aunque si tengo tiempo lo intentaré poner mejor. Lo que hago, es definirme unas funciones javascript dentro de la jsp donde utilizo el menú, y estas funciones lo único que hacen es redirigir la página actual a la que se quiera mostrar, las funciones javascript tienen el encodeURL , no se si me he explicado.

Bueno muchas gracias.
  #14 (permalink)  
Antiguo 25/04/2006, 16:18
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Una ultima pregunta, tengo una función javascript que cuando se ejecuta hace:
this.location.href='<%=response.encodeURL("User.do ")%>'
y al ejecutarse tambien pierde la sesión, en cambio con firefox funciona perfectamente, sabeis por qué?
  #15 (permalink)  
Antiguo 25/04/2006, 17:13
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años
Puntos: 0
Por cierto, tambien he probado con encodeRedirectURL y el resultado es el mismo, pieder la sesión, en cambio si lo que hago es <a href="<%=response.encodeURL("User.do ")%>">datos</a> funciona perfectamente. No se que es lo que me esta pasando, si me podeis echar una mano.
Muchas gracias.
  #16 (permalink)  
Antiguo 12/05/2006, 17:30
 
Fecha de Ingreso: marzo-2005
Mensajes: 58
Antigüedad: 19 años, 1 mes
Puntos: 0
el <html:link action="/User.do"> blablabla </html:link> es el tag de las librerias de struts que corresponde a lo que estan haciendo. Creo que puede que esto ande sin problemas (no recuerdo si es la sintaxis correcta, pero por ahi anda) cualquier cosa me decis. Te diria que te veas la doc de ese tag.

chifla cualquier cosa, espero que te sirva, saludos, pablo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:52.