# Interception for @PostConstruct und @PreDestroy



## JavaEEDeveloper (26. Sep 2012)

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


```
@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 (27. Sep 2012)

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.


----------



## JavaEEDeveloper (27. Sep 2012)

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 (27. Sep 2012)

JavaEEDeveloper hat gesagt.:


> 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.


----------



## JavaEEDeveloper (27. Sep 2012)

Ich möchte nur eine Klasse, die alle User enthält. So das ich weiß, wer alles Online ist usw ...


----------



## FArt (28. Sep 2012)

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.


----------

