# [JSF] Lifecycle Methode wird mehrfach aufgerufen



## Deadalus (23. Feb 2010)

Hallo, 

ich habe ein sehr seltsames Problem mit meinen Managed Beans. Alle Beans mit Session Scope besitzen eine Methode, die mit der Annotation @PreDestroy aufgerufen wird. Die Methoden brauche ich um externe Resourcen freizugeben. 

Ich bekam allerdings immer Exceptions, das die Resourcen schon entfernt seien. Nach etwas herumexperimentieren hab ich herausgefunden, das die @PreDestroy Methoden meiner Beans immer 2 mal direkt hintereinander nach dem Ausloggen aufgerufen werden. 

Bei Aufruf Nr.1 werden meine Resourcen ordnungsgemäß freiegeben aber beim 2. Mal knallt es natürlich. Durch Tests habe ich auch herausgefunden, das es nicht etwas 2 Instanzen der Beans gibt sondern wirklich eine Instanz direkt 2 mal hintereinander diese Methode aufruft.

Hat jemand eine Idee warum das so ist oder kann dieses Verhalten nachvollziehen? 

Oh bevor jemand auf die Idee kommt: Ich rufe diese Methoden natürlich nicht! innerhalb meines Codes auf, da die Methoden automatisch ausgeführt werden bevor das Bean entfernt wird.


----------



## damien (26. Feb 2010)

vllt. ist es ja ein Bug, nutzt du Mojarra ? 1.2 oder 2.0 ?


----------



## Deadalus (4. Mrz 2010)

Oh eine Antwort damit hab ich gar nicht mehr gerrechnet. Ich benutze aktuell Mojarra 1.2. Es handelt sich um ein vollständiges JEE - Projekt mit Glassfish v. 2 als Server


----------



## dronox (4. Mrz 2010)

Hi,

versuche spaßeshalber mal auf MyFaces umzusteigen und zu schauen, ob der Fehler genauso auftritt. Wenn er wieder auftritt, ist es wahrscheinlich ein Fehler bei der Konfiguration, wenn nicht, ist es ein Fehler der Sun-Implementierung.

Gruß


----------



## Deadalus (8. Mrz 2010)

So das spaßeshalber umsteigen war aufwendiger als gedacht, da meine Loginseite in der ich wegen meines Login über einen JAAS Realm eine gewöhnliche HTML Form verwenden muss. Apache MyFaces weigerte sich natürlich diese zu benutzen... Naja ich habs irgendwie hinbekommen.  

Auf jeden Fall ist jetzt natürlich wieder der Fall eingetroffen, mit dem ich am wenigsten gerechnet habe: 

Die @PreDestroy Lifecycle Methoden wird jetzt einfach überhaupt nicht mehr aufgerufen.:bahnhof:
Ansonsten verhält sich die Anwendung aber normal. Die @PostCreate Lifecycle Methoden der Beans werden auch anstandslos ausgeführt. 

Hat jemand ne Vermutung?

Edit: Ich hab das ganze jetzt mal noch zum "Spaß" mit Glassfish 3 als JSF 2.0 Anwendung laufen lassen. Dort werden alle @PreDestroy Methoden wieder 2 mal aufgerufen.


----------

