Login - Session Bean setzt Parameter auf false

Hi,

erstmal frohes Neues an das Tutorials-Team und allen anderen Usern.

Ich habe eine J2EE Anwendung bei der ich bei einer erfolreichen Anmeldung den Paramter "booLogin" im Session Bean auf true setzte. Standarndert ist false. Beim Aufruf der einzelnen Seiten wird erst der Parameter überprüft und falls true auch gezeigt.

Code:
Im Session Bean:
----------------

private booLogin

public boolean getBooLogin()
{
  return booLogin;
}

public void setBooLogin(boolean booLogin)
{
  this.booLogin = booLogin;
}


In den Servlets:
----------------

public void meineMethode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
  ...
  booLogin = mySessionBean.getBooLogin();

  if (booLogin) {
    ... // Zugriff erlaubt und start der Anwendung
  } 
  else
  {
    ... // Zeigt die Login Maske
  }
}

Nun habe ich aber folgendes Problem. Wenn ich ca. 1 Minute nichts machte verliert die aktuelle Session ihre Gültigkeit und der Wert von booLogin wird wieder false. Ich habe das Geführ als ob das Session Bean einfach nicht mehr Aktiv ist und daher den Standardwert sprich "false" annimmt. Wie kann ich das selber steuern?

Oder ist mein Ansatz falsch? Bin für jede Hilfe zu haben.

Gruß

Tischtennisspieler
 
N'Abend,

Tischtennisspieler hat gesagt.:
Ich habe eine J2EE Anwendung bei der ich bei einer erfolreichen Anmeldung den Paramter "booLogin" im Session Bean auf true setzte. Standarndert ist false. Beim Aufruf der einzelnen Seiten wird erst der Parameter überprüft und falls true auch gezeigt......
Nun habe ich aber folgendes Problem. Wenn ich ca. 1 Minute nichts machte verliert die aktuelle Session ihre Gültigkeit und der Wert von booLogin wird wieder false. Ich habe das Geführ als ob das Session Bean einfach nicht mehr Aktiv ist und daher den Standardwert sprich "false" annimmt.
Äh ja - also die Verwendung von Parametern innerhalb der Bean legt nahe, dass du eine Stateful Session Bean verwendest. Der Zustand dieser Bean bleibt aber nur erhalten, solange eine Session besteht. Wenn also die Session nach einer Minute ihre Gültigkeit verliert, wird sich auch der Zustand der Bean verabschieden. Wenn du jetzt eine neue Sesion aufbaust, wird auch die Bean neu "initialisiert".

Mögliche Abhilfen wären, die Session-Lifetime deines Application Servers hochzusetzen, oder auf sowas wie "selbstgemachte" Variablen, die Anmeldungen speichern zu verzichten und die Standardmechanismen zu benutzen, die dir die J2EE zur Verfügung stellt.

Viele Grüße
THMD
 
Ok,

ich habe deinen Wink verstanden :-( . Dafür schon mal Danke. Kannst du mir einen guten Mechanismus sagen damit ich darüber ein bischen im Netzt forschen kann.

Oder welche gute Mechanismen gibt es?

Gruß
 
N'Abend,
Tischtennisspieler hat gesagt.:
ich habe deinen Wink verstanden :-( . Dafür schon mal Danke. Kannst du mir einen guten Mechanismus sagen damit ich darüber ein bischen im Netzt forschen kann.
falls du in das Thema J2EE Security erst mal einsteigen willst, empfehl ich dir als Startpunkt mal das Kapitel über Security aus dem J2EE-Tutorial.
Ansonsten gibts da auch jede Menge Bücher drüber und im Netz lässt sich auch schnell was finden. Dann solltest du dich auch in den Hilfen/auf den Webseiten zu dem von dir verwendeten Application Server informieren, denn wie so oft brauchst du auch hier meistens noch herstellerspezifische Deploymendeskriptoren.

Gruß
THMD
 
Danke Thomas und THMD,

ich habe mich so ein bischen schon mal eingearbeitet und merke das ich noch einges lesen muss bis ich in der Lage bin wieder schlaue fragen zu stellen.

Bis dahin würde mir aber die Erhöhung der Session Liftime helfen. Wisst ihr zufällig wo ich die Einstellungen im AS 10.1.2 von Oracle finde?

Aber Danke für die wertvollen Infos ;) .

Gruß
 
Hallo!

Die Erhoehung des timeouts der SFSB ist nur ein ziemlich uebler Workaround und keine Loesung, das nur mal vorweg...

Schau mal in deinen orion-ejb-jar.xml

Dort hast du ja fuer jede SessionBean einen Eintrag:
<session-deployment name="MySessionBean" ...

Dieses Element hat auch ein timeout Attribut.

Gruss Tom
 

Neue Beiträge

Zurück