2009-03-19 6 views
8

Alles, was ich in den Tomcat 5.5 docs zu finden ist:Was bewirkt das crossContext-Attribut in Tomcat? Aktiviert es die Sitzungsfreigabe?

Sets auf true, wenn Sie Anrufe innerhalb dieser Anwendung auf ServletContext.getContext() wollen auf diesem virtuellen Host eine Anfrage Dispatcher für andere Web-Anwendungen erfolgreich zurückkehren laufen. Setzen Sie in sicherheitsbewussten Umgebungen den Wert false (Standard), damit getContext() immer null zurückgibt.

Ich habe einige Forum-Beiträge gefunden, dass crossContext=true ermöglicht auch die gemeinsame Nutzung das Sitzungsobjekts zwischen verschiedenen Web-Anwendungen einstellen Kommentar, aber ich bin nicht in der Lage keine offizielle Dokumentation finden dieser Angabe.

Gibt es eine Beziehung zwischen Servlet.getContext() und der Fähigkeit, Sitzungsstatus zwischen verschiedenen Webanwendungen zu teilen?

Was macht das crossContext Attribut wirklich in Tomcat?

Antwort

8

Vom javadoc ServletContext.getContext():

Diese Methode ermöglicht es Servlets Zugriff auf den Kontext für die verschiedenen Teile des Servers zu gewinnen, und je nach Bedarf Request Objekte aus dem Kontext erhalten. Der angegebene Pfad muss mit "/" beginnen, wird relativ zum Dokumentenstamm des Servers interpretiert und mit den Kontextstammverzeichnissen anderer Webanwendungen in diesem Container abgeglichen.

Wenn Sie z. B. eine Seite aus einer anderen Webanwendung einfügen möchten, müssen Sie crossContext auf true setzen.

+0

Gibt es eine Beziehung zwischen Servlet.getContext() und der Fähigkeit, Sitzungsstatus zwischen verschiedenen Webanwendungen zu teilen? – Serxipc

+1

Nicht, dass ich mir dessen bewusst bin. –

17

Sie können Sitzungen zwischen Webanwendungen teilen, indem Sie Single Sign-On Valve verwenden.

Sie würden crossContext=true festlegen, wenn Sie einige Informationen zwischen verschiedenen Webanwendungen im selben virtuellen Host teilen möchten.

Zum Beispiel würde app1 nennen:

setAttribute("name", object); 

und eine andere App

getContext("/app1").getAttribute("name"); 

lesen Sie die Informationen nennen könnte. Wenn crossContext nicht auf "true" festgelegt ist, hat der getContext ("/ app1") null zurückgegeben.

Die Verwendung von crossContext ist jedoch sowohl selten als auch potenziell unsicher.

+0

Danke, aber ich bin nicht auf der Suche nach einem Single-Sign-On, ich muss die HttpSession Attribute teilen. Sehen Sie sich meine neue Frage http: // stackoverflow an.com/questions/665941/Any-Way-to-Shared-Session-Zustand-zwischen-verschiedenen-Anwendungen-in-Kater – Serxipc

+0

Thaaank Sie alle und specialy Sie Sir, thaaaaaaaaaaaanks Sie sparen mein Leben – Dilllllo

+0

+1 für das Single Sign -auf Unterlagen. –

0

Ich habe es selbst versucht und ich kann nicht die magischen Sitzung teilen Nebenwirkung, so dass das crossContext-Attribut nur tut, was die Dokumente sagen.

Ich habe another question gepostet, um zu sehen, ob es eine Möglichkeit gibt, den Sitzungsstatus zu teilen.