FAM - Dues aplicacions simultànies
1. Quin és el problema?
El problema és que no es pot obrir més d'una aplicació del tipus FAM en un mateix navegador (una aplicació per tab o pestanya). En el moment en que s'obre una segona aplicació en un altre pestanya, es tanca la sessió automàticament de les dos aplicacions.
2. Per què succeeix?
Totes les aplicacions JEE Web fan servir una cookie per gestionar les sessions. El nom per defecte és JSESSIONID. Aquesta cookie permet el seguiment de l'usuari entre peticions i alhora està relacionada amb al domini de les aplicacions, que en el nostre cas sempre és el mateix: aplicacions.diba.cat (producció).
Llavors, en el nostre escenari, totes les aplicacions JEE tenen el mateix domini i el mateix nom de cookie pel seguiment (JSESSIONID).
Cal tenir en compte també l'arquitectura de servidors: balancejadors i servidors Apache configurats amb el plugin de WebLogic que direccionen les peticions HTTP/HTTPS cap al cluster de servidors d'aplicacions WebLogic.
I el darrer factor és la gestió d'aquesta cookie per part d'IceFaces 1.8.2.
Llavors, una explicació simplificada de perquè passa això és que al fer un segon inici de sessió des del mateix navegador, la cookie de sessió pren un valor diferent que comporta automàticament l’anul·lació de la seva validesa per motius de seguretat. Aquesta anul·lació es feta per IceFaces ja que no pot distingir a quina pestanya pertany cadascuna de les cookies.
3. Com es soluciona?
La solució consta de dos parts:
- Modificació del nom de la cookie a l'aplicació JEE Web
- Configuració del plugin Weblogic per l''Apache amb el mateix nom de la cookie
Per facilitar el manteniment dels noms de les cookies es recomana seguir el patró J<codi projecte>ID. Exemples: JFAMID, JSISEMANAGERID, ....
3.1. Modificació del nom de la cookie a l'aplicació
El nom de la cookie de sessió es configura a l’arxiu weblogic.xml.
Exemple d'arxiu weblogic.xml del projecte SISEMANAGER on es pot observar en negreta i itàlica la configuració del nom de la cookie:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<wls:weblogic-version>10.3.0</wls:weblogic-version>
<wls:context-root>siseManager</wls:context-root>
<wls:container-descriptor>
<wls:show-archived-real-path-enabled>true</wls:show-archived-real-path-enabled>
</wls:container-descriptor>
<wls:session-descriptor>
<wls:cookie-name>JSISEMANAGERID</wls:cookie-name>
</wls:session-descriptor>
</wls:weblogic-web-app>
3.2. Configuració del plugin d'Apache
Aquesta part la realitza Plataformes i cal demanar-li el canvi indicant el nom de la cookie per l'aplicació concreta i l'entorn (DVOL, INT, PRE PRD) i ells s'encarreguen d'actualitzar la configuració de l'Apache. Un cop rebuda la confirmació, cal procedir amb el desplegament de l'aplicació a l'entorn corresponent.
4. Com es verifica el nom de la cookie?
La manera més eficient de verificar el nom de la cookie és mitjançant les eines de desenvolupament del navegador Google Chrome
Obre el navegador i polsa F12 per habilitar les eines Web. Selecciona de la part superior la opció 'Resources' i llavors a la esquerra desplega la opció 'Cookies'. Es mostrarà una entrada per cadascun del dominis visitats i seleccionant el domini es mostrarà a la dreta les cookies que te emmagatzemades i els seus valors.
A les següents imatges podem veure les diferents cookies segons es van obrint pestanyes amb noves aplicacions.
Primera aplicació oberta: SISE Manager.
Segona aplicació oberta: FAM. Es pot veure que tenen noms de cookies de sessió diferents.
I finalment la tercera aplicació que no està configurada: SIGAC-
Amb això no n'hi ha prou, cal verificar que tots els elements des del navegador fins a l'aplicació estan ben configurats i això es confirma navegant per l’aplicació. Si amb l’ús de l’aplicació es manté el valor de la cookie i no apareix un altre de nova, llavors tots els elements estan ben configurats. El següent pas seria fer la prova obrint un altre pestanya i un altre aplicació tipus FAM.