JSF Entitybean direkt in Sessionscoped Bean referenzieren

Reggie

Aktives Mitglied
Tach,

Ich habe momentan ein Problem das ich einfach nicht begreife.

Grundsätzlich habe ich eine einfache Java ee Anwendung auf glassfish deployed. Ich benutze eine Custom Security Realm die wunderbar funktioniert.

Ich kann einloggen, ausloggen und der User wir über request.remoteUser auch angezeigt.

Soweit so gut.

Nun habe ich folgende Klassen.(Vereinfacht)

Java:
@Entity
public class User {

@Id
private long userId;
private String name;
private String password;

//Getter and Setter
}

Java:
@Named
@SessionScoped
public class SessionBean implements Serializable{

@Inject
private UserFacade userFacade;
private User user;

public getUserfromDB(String name){
user = userFacade.loadUserFromDB(name);
}

// Getter an Setter
}

Sobald ich eingeloggt habe via Form Login oder auch Basic und anschliessend die Methode getUserfromDB("test") aufrufe wird das Login zurückgesetzt. Egal wie ich die Userinstanz in SessionBean manipuliere, es wird sofort das Login zurückgesetzt und ich bin wieder als Gast eingeloggt.

Ist es grundsätzlich verpöhnt/verboten Entity Klassen direkt in Sessionscoped Beans einzubinden?

Kann mir das Phänomen irgendwer erklären? Ich habe da bereits Stunden in googlen und ausprobieren investiert und einfach nichts finden können das mir hilft.

Danke im voraus für eure Zeit!

Gruss Reggie
 

stg

Top Contributor
Am geposteten Code ist soweit nichts falsch. Das einzige Problem, welches hier auftreten könnte, ist, dass deine @SessionScoped Annotation mögicherweise aus dem falschen Package ist. Dann würde sich deine Bean so verhalten, als sei sie im RequestScope. Das würde aber nur erklären, wieso die Variable user beim nächsten request wieder leer ist, nicht aber das evtl wirklich ein erfolgter login zurückgesetzt wird.
 

Reggie

Aktives Mitglied
Salu stq,

Danke für deine Antwort. Ich glaube aber ich habe den Fehler gefunden.

Ich zeige einen Logout Link an sobald ein Benutzer eingeloggt ist. Den Logout Link habe ich mit
HTML:
<h:link outcome="#{sessionBean.logout()}" />
realisiert. Nun wird aber leider beim anzeigen dieses Links die Methode erst einmal ausgeführt damit der HTML Code generiert werden kann.

Und Schwups der Benutzer ist bereits wieder ausgeloggt.

Momentan scheint es zu funktionieren, dachte ich allerdings schon mehrfach.

Gruss Reggie
 

Ähnliche Java Themen

Neue Themen


Oben