Wie bekomme ich eine SessionScoped-CDI-Bean aus einem Filter?

8

Diese Frage bezieht sich auf eine vorherige auf Schreiben eines Session-Timeout-Handler .

Die Antwort in diesem Thread beinhaltete den Zugriff auf verschiedene sitzungsspezifische verwaltete Beans vom Servlet. Die Empfehlung (wie hier hier ) ist dies in der Filter:

%Vor%

Dies ruft vermutlich eine Session-Bean der Klasse User ab. Das Problem ist, dass dies nicht funktioniert.

Was schief läuft, ist, dass die Beans in den Sitzungsattributen vorhanden sind, aber sie werden von Schweißanlagen umschlossen. Ich habe die Methode doFilter () wie folgt geschrieben:

%Vor%

Wenn diese Sitzungsattribute ausgegeben werden, bekomme ich normalerweise folgendes:

%Vor%

Attribut # 2 scheint die Bohne darzustellen, die ich möchte. Unnötig zu erwähnen, dass ein Aufruf von session.getAttribute ("login") nicht funktioniert.

Kann jemand sagen, wie man auf die zugrunde liegende gemanagte Bean zugreift? Ich würde es lieber auf eine Weise machen, die nicht an Weld gebunden ist, aber das ist vielleicht nicht möglich.

    
AlanObject 19.10.2011, 00:30
quelle

2 Antworten

15

Dieser Ansatz funktioniert nur für das Session-Scoped JSF @ManagedBean , nicht für CDI @Named bean.

Sie müssen @Inject als Eigenschaft des Filters verwenden .

%Vor%     
BalusC 19.10.2011, 00:34
quelle
4
%Vor%     
liukvar 25.10.2011 10:49
quelle

Tags und Links