2010-06-03 25 views
7

Microsoft, en un esfuerzo por hacer que Internet Explorer 8 sea "más estable" y "más rápido", ha cambiado la arquitectura subyacente del navegador e introdujo una función llamada "IE de acoplamiento débil" (LCIE) que funciona en sesiones compartidas a través de TAB y nuevas instancias.¿Cómo evitar el intercambio de sesiones proporcionado por IE8 programáticamente en la aplicación Java EE?

Pero compartir la sesión puede ser fatal cuando alguien intenta hacer dos cosas diferentes a la vez con la misma aplicación, p. como alguien quiere reservar un billete de ida y un billete de ida y vuelta a la vez, en ese momento reservará 2 billetes iguales a los que no tenía intención de comprar.

SOLUCIÓN PROBABLE EN TI

  1. bien la creación de una nueva ventana en vez de crear haciendo clic en un icono o Ctrl + N, se debe utilizar Archivo -> Nueva sesión; eso no sucederá.

  2. Puede realizar un cambio de registro en la PC del cliente, agregando lo siguiente.

    [HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main]

“TabProcGrowth" = dword: 00000000

desactivará "sin apretar Pareja IE8"; IE8 funciona entonces como versiones anteriores de IE.

  1. Ejecutar MSIE utilizando iexplore.exe -nomerge deshabilitará "Par flojo IE8"; IE8 entonces funciona como versiones anteriores de IE.

Pero, ¿cómo lo haré programáticamente?


Mire, mi problema no es mi aplicación. Funciona bien si estoy iniciando sesión en un usuario, pero cuando inicio sesión en varios usuarios a través de diferentes usuarios de diferentes instancias del navegador IE8, mis datos de sesión posteriores anulan el anterior, esto se debe a que ambos navegadores IE usan el mismo ID de sesión. Está sucediendo debido a la sesión compartida de IE8. Solo se mantiene una sesión para una aplicación, sin embargo, cuántos usuarios estoy iniciando. De hecho, deseo mantener la sesión por usuario.

Me gusta cuando estoy iniciando sesión en Gmail en un navegador. Si solo estoy escribiendo Gmail en otro navegador. Está iniciando sesión automáticamente. No quiero esto en mi aplicación. Debería obtener el inicio de sesión de otro usuario a la vez que debería realizar una operación independiente.

Mi aplicación utiliza Struts, Spring, Hibernate & servidor de aplicaciones JBoss.

Ahora dime cómo debo proceder?

Respuesta

0

Trate de mantener la identificación de la sesión en el lado del cliente. Por ejemplo, en el nivel JSP. Luego, devuélvalo al componente del servidor e intente rastrearlo. Diga si la sesión recibida está actualmente en curso en el lado del servidor, luego sostenga durante algún tiempo mediante la sincronización o un mecanismo de espera similar. Espero que este tipo de problemas de sesión se resuelvan de forma complicada.

2

Creo que los problemas que describe anteriormente se pueden replicar en todos los navegadores y se pueden abordar mejor desde el lado del servidor. Un enfoque que conozco es crear una identificación de conversación y administrar el ciclo de vida de la conversación con una máquina estatal.

Esto le permite a usted (y a sus usuarios) tener una sesión en la que se pueden mantener conversaciones múltiples de manera concisa, lo que sucede mucho en la práctica, bueno, al menos en aplicaciones empresariales internas. El mundo es un lugar más caótico de lo que muestran los modelos de procesos de negocios.

0

Su mejor opción es probablemente utilizar un marco web que admita varias sesiones simultáneas (a veces llamadas conversaciones o flujos), o simplemente evite usar tanto la sesión y vaya REST. Si necesita hackearlo en el cliente, no podría hacerlo desde su aplicación web, pero un programa de victoria personalizado o un archivo .reg podría hacerlo. Esto también significa que los usuarios con otros sistemas operativos y navegadores seguirán teniendo el mismo problema.

0

No me gustaron todas las otras soluciones proporcionadas. Lo único que quiero es proporcionar una URL en la que el usuario pueda hacer clic y reciba una nueva sesión para iniciar sesión. Hay una función sessionAuthentication clara, pero no un openLinkInNewSessionWindow

Una solución alternativa para el navegador Internet Explorer 8 se podría proporcionar un enlace en la página de "inicio de sesión múltiple" y utilizar el WScriptl feo desde el navegador. Un ejemplo:

<html> 
    <head>  
    <script> 
     function openNewSessionIE8NoMerge() { 
     // This opens a new session window for windows with IE8, unfortually there is a Active X security warning. 
     var WshShell = new ActiveXObject("WScript.Shell"); 
     WshShell.Run("iexplore.exe -nomerge www.gmail.com?testNewSession"); 
     } 
    </script> 
    </head> 

    <a href="#" onclick="javascript:openNewSessionIE8NoMerge();">Click here for a new session IE8 (multiple sessions on the same application)</a> 
</html> 

prueba: Guarda el ejemplo de sampleNewSession.html, abra el archivo con Internet Explorer 8, en una nueva pestaña de inicio de sesión en Gmail, pulse en el enlace sampleNewSession. Ahora hay una nueva ventana y no ha iniciado sesión.

Esto ayudará al usuario, solo puede hacer clic en un enlace. El único problema es el mensaje de seguridad de activeX.

+0

ya está trabajando ... Pero esto no es lo que necesito. – Idiot

+0

ya, está funcionando ... Pero esto no es lo que necesito. Mi necesidad es tener una aplicación web en struts1.2. tenemos diferentes grupos de usuarios. Los diferentes grupos de usuarios obtienen diferentes instalaciones. Pero si estoy iniciando sesión en 2 navegadores diferentes con dos usuarios de grupo diferentes, el usuario del grupo posterior anula la identidad del grupo anterior. – Idiot

Cuestiones relacionadas