# Tomcat + Eclipselink = NotSerializable Exception?



## chrisbad (30. Mai 2012)

Howdy,

ich habe einen Tomcat 7 + JSF2 + Eclipselink 2.3.0.
Desweiteren nutze ich ManagedBeans (SessionScoped) mit einem ControllerObjekt in dem wiederum ein EntityManager steckt.

Das Problem ist hierbei, dass Tomcat beim Stoppen bzw. Starten versucht die Sessions zu speichern, bzw. wieder herzustellen. Da die EntityManagerImpl nicht serialisierbar ist (in der Spezifikation JPA2 auch nicht verlangt) wirft Tomcat verständlicherweise eine NotSerializableException.

Wenn ich im Tomcat das Speichern der Sessions abschalte, so sehe ich zwar auf der Konsole keine Fehlermeldungen mehr, aber im Log tauchen diese sehr wohl noch auf.

Ich habe nun versucht in meiner SessionScoped-ManagedBean den Controller mit dem EntityManager per "transient" von der Serialisierung auszunehmen -> kein Erfolg

Dann habe ich versucht per @PostConstruct und @PreDestroy die Referenz vor der Serialisierung herzustellen bzw. zu kappen -> kein Erfolg

Allmighty Google weiß auch nicht wirklich Rat...
Der Fehler ist bekannt, aber keiner kümmert sich wirklich drum.

Das seltsame ist halt, dass Glassfish ja auch Eclipselink nutzt und ich diesen Fehler dort nie hatte.

Nun fällt mir schlicht nichts mehr ein wie ich den Fehler loswerden kann...
Eigentlich hätte ich auch schon gerne dass Tomcat die Sessions bei einem Neustart behält...

Hat jemand noch eine Idee?


----------



## maki (30. Mai 2012)

> Eigentlich hätte ich auch schon gerne dass Tomcat die Sessions bei einem Neustart behält...


"Eigentlich" kannst du das vergessen, so ohne weiteres wird das nix.
Die Fehlermeldungen kannst du dann ignorieren wenn du dich von der Idee verabschiedest einen EM zu serialisieren.


----------



## chrisbad (30. Mai 2012)

Ok,  ich kann auch drauf verzichten. Aber bekomme ich irgendwie die Warnungen aus dem Log?
Bzw. kann ich irgendwie verhindern, dass Tomcat die EntityManager in der Session versucht zu speichern?

Wie gesagt, "transient" vor dem Object mit dem EntityManager funktioniert nicht, und das Object vor dem Speichern mit "@PreDestroy" zu "nullen" funktioniert auch nicht.
Eigentlich verstehe ich auch nicht warum der Tomcat überhaupt versucht den genullten Controller zu speichern?

Na dann werd ich wohl wieder auf Weld und "@Named" umsteigen, da hatte ich den Fehler noch nie...mal schauen ob das dann geht...


----------

