2010-10-14 17 views
0

Je suis nouveau sur weblogic et je suis le portage sur une série d'applications web de jboss. J'ai plusieurs guerres que je déploie sur le même serveur weblogic. Tous sont configurés pour l'authentification basée sur le formulaire, soutenue par le répertoire actif.invalide session à travers toutes les applications dans weblogic 11g

Je rencontre des problèmes lors de la déconnexion des applications. J'ai l'une des applications qui sert d'application de connexion qui contient le formulaire login.jsp. Il a également une servlet de déconnexion qui appelle session.invalidate(). Après avoir appelé cela, je ne peux pas accéder aux pages protégées dans l'application principale, mais peut accéder aux pages protégées dans les autres applications. D'après ce que j'ai lu, weblogic 11g partage la même session dans toutes les applications, ce qui est logique avec ce que je vois. Je trouve des références à l'utilisation de ce qui suit pour annuler une session dans toutes les applications:

invalidateAll(HttpServletRequest req) 

dans le paquet

weblogic.servlet.security.ServletAuthentication 

Cependant, je ne trouve pas cela ou quelque chose de semblable à 11g weblogic. Où est cette classe d'utilité ou comment dois-je faire cela?

Merci

MISE À JOUR:

Sur la base de la réponse de Josek ci-dessous, je devais ajouter ce qui suit à mon dossier weblogic.xml pour toutes les applications que je déploie:

<session-descriptor> 
    <sharing-enabled>true</sharing-enabled> 
</session-descriptor> 

Le fichier jar que je cherchais s'appelle wls-api.jar qui contient la classe ServletAuthentication. J'utilisais la version 10.3.3.0 basée sur le zip du serveur de logique Web. J'ai trouvé le fichier jar dans l'installation de l'installation du serveur wlserver_10.3 dans le cadre de l'installation de Weblogic Fusion. Je viens de prendre le pot et l'a ajouté à notre référentiel Nexus maven.

Répondre

2

invalidateAll est documenté dans le cadre de WLS 10.3 (alias 11g) donc il devrait fonctionner dans votre servlet de déconnexion. Avez-vous essayé et fait face à une erreur?

Il dispose également d'une servlet de déconnexion que appelle session.invalidate(). Après appeler cela, je ne peux pas l'accès protégé pages dans l'application principale, mais peut l'accès des pages protégées dans les autres applications

Cela me indique que les sessions sont pas partagés entre web applications, qui est le comportement par défaut. Si les sessions étaient partagées, l'utilisateur serait déconnecté de toutes les applications. Pour les sessions à partager, vous devez définir sharing-enabled true

Comme the docs state,

Par défaut, les applications Web ne partager la même session. Si vous voulez comme des applications Web pour partager la même session , vous pouvez configurer le descripteur de session au niveau de l'application dans l'application weblogic.xml descripteur de déploiement. Pour permettre aux applications Web de partager la même session , définissez l'attribut de partage dans le descripteur de session sur true dans le descripteur de déploiement weblogic-application.xml .

+0

Salut merci pour l'information. Le problème avec invalidateAll est que je ne peux pas trouver le fichier jar qui contient cette méthode. Je vais essayer de définir l'attribut de partage activé. Merci! – Casey

+0

Ok, tout fonctionne. Voir ci-dessus pour une solution basée sur votre réponse. – Casey