Ich habe @EJB in der @ViewScoped-verwalteten Bean gelesen verursacht java.io.NotSerializableException , aber meine Einstellung für das Speichern ist server
.
Hier ist was ich habe:
web.xml
:
customer.xhtml
:
CustomerController.java
:
PersonFacade.java
:
AbstractFacade.java:
%Vor%und das ist der Stacktrace:
%Vor% Ich weiß, dass ich dies umgehen kann, indem ich PersonFacade
als transient
deklariere und JNDI verwende, um nach der Rekonstruktion eine EJB-Referenz zu erhalten, aber ich mag diesen Ansatz wirklich nicht.
Ist es möglich, dass Glassfish 3.1.1 nicht serialisierbare EJBs bereitstellt? Gibt es eine Möglichkeit, @EJB
und @ViewScoped
zusammen zu verwenden?
Aktualisierung: Ich habe festgestellt, dass dies ein MyFaces-Problem ist, alles funktioniert gut mit mojarra
:) Ich hatte das gleiche Problem: Ссылка
David Blevins drüben beim Apache TomEE hat mir geholfen, einen Bug und Patch für MyFaces zu loggen. Das Problem wurde generiert Proxy-Klassen sind nicht auf dem Classloader-Pfad für ihre Deserializer.
Eine Umgehungslösung besteht darin, diesen Web-App-Parameter auf "false" zu setzen: org.apache.myfaces.SERIALIZE_STATE_IN_SESSION
Ich habe das Problem auch gesehen. Was ich in der Vergangenheit getan habe, ist meine Bohne in ein StateBean
zu teilen, das ist @ViewScoped
und ein ActionsBean
ist @RequestScoped
. Das ActionBean
wird mit dem StateBean
sowie allen EJBs oder nicht serialisierbaren Ressourcen, die auf Objekte zugreifen, injiziert. Im Frontend verwenden Sie% cc_de% für den Zugriff auf Eigenschaften und StateBean
für die Ausführung von Aktionen.
Ich würde gerne von jemand anderem hören, der mein "bohnenspaltendes" Muster veraltet machen würde.
Dies ist ein Beispiel für das, was ich tue:
%Vor% Hinweis ActionsBean
ist CustomControllerStateBean
und @ViewScoped
enthält nur Serializable
Objekte.
Hinweis Serializable
ist CustomControllerActionsBean
und ist NICHT @RequestScoped
an enthält nicht Serializable
Objekte.
Ihr Front-End wird nicht so aussehen:
%Vor% Hinweis Serializable
wird oben in CustomControllerActionsBean
verwendet und p:commandButton
wird in CustomControllerStateBean
s verwendet.
Tags und Links serialization jsf-2 ejb myfaces managed-bean