Error beans de session a través de proxy

Tenga una aplicación web en una empresa de alojamiento Web(JSP-Tomcat-Apache-JDBC-W2000server-SQLServer2000)
Utilizo Javabeans de sesión para conectarme y gestionar las bases de datos (SQL server vía JDBC).
Cuando se accede desde cualquier punto de España vía modem no hay ningún problema, pero cuando se accede a la aplicación web desde una red local dentro de una empresa a través de un proxy ocurre que el resulset que devuelve es siempre el último resulset que se haya creado por cualquiera de la empresa, con lo que al navegar con el resulset (getnext) da un error Nullsception o si alguna columna invalida del resulset, ya que solicita uno y le devuelve otro. Si se hace click en el icono de actualizar del navegador, el resulset ya si se crea el solicitado y ya funciona bien.
Pregunta=¿Qué diferencia puede existir entre acceder distintos usuarios a través de un mismo proxy y acceder individualmente a través de ADSL o modem normal, para que los beans de scope=session se les esté cruzando los objetos?
He probado : a no usar directrivas includes dentro de las JSP sino poner todo el código en la misma página. También lo primero que hago es crear un nueva conexión antes de crear el resulset.
Yo creo que el proxy debe de tener una cache lo cual confunde a las id de session que maneja el servidor o bien para el servidor todas las solicitudes que vienen del mismo proxy las asigna la misma sesión.
1

1 respuesta

Respuesta
1
Ante todo perdona por el retraso.
Tú reflexión es correcta, el proxy tiene una cache donde se van almacenando las páginas.
Es decir el problema no están en los beans, sino en las JSP donde cargas dichos beans.
Para evitar esto, francamente no se me ocurre la idea, pero te diré que en las JSP, puedes emplear unas instrucciones para evitar que la página se guarde en caché (en la caché del navegador, no sé si servirá para la caché del proxy), si no te sirve tendrás que ver la configuración del proxy.
Te adjunto a continuación dichas instrucciones:
En HTML:
<META HTTP-EQUIV = "expires" CONTENT="0">
<META HTTP-EQUIV = "Pragma" CONTENT= "no-cache">
En JAVA: response.setHeader ("Pragma", "no-cache");
response.setHeader ("Cache-Control", "no-cache");
response.setDateHeader ("Expires",0);
Gracias por contestarme.
Pondré en las páginas que tengan JSP de conexión a B.D. las cabeceras META.
También he seguido probando y he sacrificado el mantener una conexión permanente a la B.D. para el mismo usuario por cerrarla y volverla a abrir y eliminar el bean de sesión de acceso a la B.D. cada vez que se crea un nuevo resulset:
<%
HttpSession sesionOk = request.getSession();
bean0.cerrar(); //método del bean de sesion
sesionOk.removeAttribute("bean0");
%>
Y creo que se ha solucionado, ya que antes no cerraba en todos los caso la conexión y daba errores.
Aunque en teoría debería de funcionar que con la misma conexión se pudieran crear distintos resulsets, pero es posible que lo forme en la caché del proxy y/o del navegador.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas