Frage zu SessionBeans

ceene

Erfahrenes Mitglied
Hallo alle zusammen

Ich habe eine frage zu SessionBeans im allgemeinen. Ich habe in einem Buche gelesen, ich zitieren:
"Die Referenz "this" ist sehr kritisch. Jede....... .......Zu jeder SessionBean gibt es ein Session Handle. Dieses Handle ersetzt die this-Referenz."

Ist damit die HttpSessionHandle gemeint oder was ist damit gemeint?

Ich hoffe mir kann einer den Knoten im Kopf etwas lockern :)
 
Das Problem mit this und Komponenten (egal ob Spring oder EJB) ist, dass this eine direkte Objektreferenz ist, die Container umd diese Objekte jedoch einen Proxy legen, der dann Sachen wie Security, Transaktionen usw realisiert. Wenn du die Komponente nun von aussen rufst, werden eben diese Sachen berücksichtigt. Bei einem call auf this aber eben nicht, da du die direkte Referenz hast und nicht den Proxy. Das führt zum Anfang zu Veriwrrungen, ist aber logisch ;).

Der Workaround für solche Problematiken ist oft, dass man sich eine Referenz auf seinen umgebenden Proxy geben lässt. SessionHandle meint genau sowas. D.h. wenn man diese komplette (um den Container angereicherte) Funktionalität benötigt verwendet man diese Referenz anstelle von this.

Gruß
Ollie
 
Ah ok, danke.

Das bedeutet also, wenn this weglasse, dann soltle das schon reichen um eine vernünftige Mehrbenutzerfähigkeit zu gewährliesten, sehe ich das richtig?
Oder muss ich auf jeden Fall den SessionHandler benutzen?
 
Wie kommst du jetzt plötzlich auf Mehrbenutzerfähigkeit? Das hat nicht wirklich was miteinander zu tun. Eine Session im oben beschriebenen Sinne hat nichts mit einer HTTP Session zu tun.

Gruß
Ollie
 
Also das mit dem this ist mir glaub ich klar, aber das mit der Session nicht so wirklich.
Hängt der Session Hanlder nicht mti der HttpSession zusammen?
 
Ok, also hab ich das richtig verstanden?
Der SessionHandler bei den EJBs gehört zu einer Object-Session von dem jeweiligen Bean.
Object-Session und HttpSession hängen nicht zusammen.

Aber wenn die nicht zusammen hängen wo kann man dann den Timeout des Objects festlegen und wo kann man per Code noch eingreifen wenn der Timeout eintritt?

Ich hoffe ich kann mich einigermaßen verständlich ausdrücken ;)
 

Neue Beiträge

Zurück