Pregunta

Tenemos una aplicación Eclipse RAP que se está comportando de forma un tanto extraña en Firefox: dos problemas distintos.

Cuando navegas, puedes hacer clic en un botón en una parte del sistema. Esto abre una ventana emergente como tal:

IWorkbenchBrowserSupport bs;
bs = PlatformUI.getWorkbench().getBrowserSupport();
int style = IWorkbenchBrowserSupport.AS_EXTERNAL;
IWebBrowser b = bs.createBrowser(style, getRandomID(), "Hello world", "");
b.openURL(new URL(...));

donde la URL es otro servlet en la aplicación. Este servlet está en el mismo tiempo de ejecución, pero no tiene nada que ver con RAP: toma un blob binario del almacenamiento en memoria y lo descarga en la secuencia de salida.

Problema 1: Esto hace que la sesión HTTP se apague en Firefox y muestra que la sesión caducó " Página de error de RAP con un enlace para reiniciar la sesión.

Problema 2: Ahora, al hacer clic en el enlace para reiniciar la sesión, se muestra nuevamente el cuadro de diálogo de la aplicación, pero el error de sesión expirada se muestra nuevamente en el momento en que hace algo. Esto evita que el usuario vuelva a usar el sistema, a menos que Firefox se cierre completamente y se reinicie. Un vistazo rápido con FireBug revela que el JSESSIONID pasado por Firefox no cambia.

¿Alguien ha visto esto antes?

¿Fue útil?

Solución 2

Resulta que si una aplicación RAP abre una ventana emergente que apunta a un servlet en la propia aplicación, dentro del contexto actual del servlet HTTP, la sesión se cancela. Se corrigió creando un contexto HTTP ficticio para el servlet en cuestión.

Otros consejos

¿Cuánto tiempo dura el volcado de la secuencia a la salida? ¿Puede causar un tiempo de espera? Como RAP usa las llamadas de Javascript, puede ser mucho más corto que el tiempo de espera normal.

Para el problema 2: Firefox almacena en caché muchas cosas; y si la ejecución de Javascript se bloquea, podría causar este tipo de problemas.

¿Estos problemas están presentes en otros navegadores? Podría ser una buena idea consultar con el navegador interno (o cualquier otro navegador con un motor de renderizado diferente).

Si necesita entregar contenido desde la misma aplicación, debe usar un controlador de servicio en su lugar. Vea estas preguntas frecuentes: http://wiki.eclipse.org/RAP/FAQ#How_to_provide_download_link.3F

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top