Interception for @PostConstruct und @PreDestroy

Hallo,
ich möchte gerne eine Methode überwachen die mit @PostConstruct markiert wurde.

Java:
    @PostConstruct
    @Interceptors(DefaultUserManager.class)
    public void create() {

    }

leider wird die Methode im DefaultUserManager mit @AroundInvoke nicht aufgerufen.
Wenn ich das @PostConstruct entferne, dann schon.

Wie kann ich den Lebenszyklus einer Klasse überwachen?
 

FArt

Top Contributor
Mir fällt nicht ein, wofür du so was brauchen könntest, da du ja sowieso über den Callback benachrichtigt wirst.

Erkläre mal deinen Usecase, ich glaube du denkst gerade in die falsche Richtung.
 
Hi,
habe da eine Klasse User.
Die Klasse User wird nur dann erzeugt, wenn eine erfolgreiche Authentifizierung erfolgte.
Der UserManager ist eine Singleton Session Bean und soll alle Referenzen von User beherbergen.
Anstatt immer UserManager.addUser() aufzurufen, wollte ich das über Interceptors regeln.
 

FArt

Top Contributor
Hi,
habe da eine Klasse User.
Die Klasse User wird nur dann erzeugt, wenn eine erfolgreiche Authentifizierung erfolgte.
Der UserManager ist eine Singleton Session Bean und soll alle Referenzen von User beherbergen.
Anstatt immer UserManager.addUser() aufzurufen, wollte ich das über Interceptors regeln.

Deine seltsame Anforderung kommt daher, dass du hier versucht technische Belange (Authentisierung) mit Mitteln der Businesslogik zu realisieren. Da kommt nichts sinnvolles raus.

Authentisierung solltest du den Container regeln lassen. Der Applikationsserver unterstützt mit Sicherheit JAAS. Schreibe ein LoginModul, welches deine technische Authentisierung realisiert und kapselt und konfiguriere deine EJBs und die Businesslogik entsprechend. Der Container wird vor jedem Aufruf entsprechend überprüfen, ob eine erfolgreiche Authentisierung stattgefunden hat.
 

FArt

Top Contributor
Je nachdem, wie deine Anwendung realisiert ist, wird es eine Art Session mit einem Lebenszyklus geben. Bei der Anmeldung wird dieses Session erzeugt, bei der Abmeldung (oder nach einem Timeout) gelöscht.

Auch um das zu realisieren benötigt man keinen Interceptor um die @PostConstruct Methoden mehrer Beans.
 

Neue Themen


Oben