2016-06-01 13 views
1

Navigieren von einer Seite zu anderen erhalten ständig folgenden Fehler. Fehler nicht mit irgendeinem meiner Code zumindest von Stack-Trace verwandt. Von Debug-Drucken scheint, dass es passiert, nachdem die Seite geladen wurde.xPage managedBean ODA-Anwendungsfehler

Irgendwelche Gedanken?

com.ibm.xsp.FacesExceptionEx: java.io.NotSerializableException: org.openntf.domino.impl.Document 
    com.ibm.xsp.application.AbstractStateManager.saveSerializedView(AbstractStateManager.java:121) 
    com.ibm.xsp.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:152) 
    com.ibm.xsp.application.ViewHandlerExImpl._saveViewState(ViewHandlerExImpl.java:455) 
    com.ibm.xsp.application.ViewHandlerExImpl.saveViewState(ViewHandlerExImpl.java:449) 
    com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:324) 
    com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:336) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103) 
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120) 
    com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:270) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:261) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:588) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:865) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:808) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:577) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 
    com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 
java.io.NotSerializableException: org.openntf.domino.impl.Document 
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185) 
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    java.util.TreeMap.writeObject(TreeMap.java:5740) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    java.lang.reflect.Method.invoke(Method.java:611) 
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1059) 
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502) 
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) 
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1555) 
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516) 
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) 
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1555) 
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516) 
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) 
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    java.util.HashMap.writeObject(HashMap.java:942) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    java.lang.reflect.Method.invoke(Method.java:611) 
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1059) 
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502) 
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) 
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
    java.io.ObjectOutputStream.writeUnshared(ObjectOutputStream.java:413) 
    com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:438) 
    com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
    com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
    com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
    com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
    com.ibm.xsp.application.AbstractSerializingStateManager.saveSerializedView(AbstractSerializingStateManager.java:294) 
    com.ibm.xsp.application.AbstractSerializingStateManager.doSaveSerializedView(AbstractSerializingStateManager.java:269) 
    com.ibm.xsp.application.FileStateManager.doSaveSerializedView(FileStateManager.java:290) 
    com.ibm.xsp.application.FileStateManager.doSaveSerializedView(FileStateManager.java:270) 
    com.ibm.xsp.application.AbstractStateManager.saveSerializedView(AbstractStateManager.java:114) 
    com.ibm.xsp.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:152) 
    com.ibm.xsp.application.ViewHandlerExImpl._saveViewState(ViewHandlerExImpl.java:455) 
    com.ibm.xsp.application.ViewHandlerExImpl.saveViewState(ViewHandlerExImpl.java:449) 
    com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:324) 
    com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:336) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103) 
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120) 
    com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:270) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:261) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:588) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:865) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:808) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:577) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 
    com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 

Antwort

1

Sie können kein Domino-Objekt in einer verwalteten Bean speichern. Wie die Methode sagt, ist es nicht serialisierbar. ODA kann dieses Problem nicht umgehen.

Meine Empfehlung wäre, entweder das DominoDocument-Objekt (wenn Sie das Front-End-Dokument benötigen, also während der Lebensdauer der Bean zu aktualisieren, aber nicht jedes Mal zu speichern) oder die UNID (wenn Sie nur das Backend-Dokument benötigen)). Database.getDocumentByUNID() ist extrem schnell, Sie sollten sich also keine Gedanken über die Auswirkungen auf die Leistung machen, wenn Sie das Dokument erhalten.

Wenn Sie vermeiden möchten, dass das Dokument im XPages-Lebenszyklus mehrmals abgerufen wird, legen Sie das resultierende Document-Objekt in requestScope ab und überprüfen Sie es, bevor Sie es aus der Datenbank abrufen. Alternativ (ich bin mir nicht sicher, wie Best Practice das ist oder ob es richtig aufgeräumt ist) kann es eine Option sein, die Variable auf zu setzen, so dass sie nicht am Ende jeder Anfrage serialisiert wird, sondern in der Datenbank gespeichert wird die Bean für die Dauer jeder partiellen Aktualisierung.

+0

Ich habe kein Domino Objekt ... Zumindest finde ich keine in meinem Code ... –

+0

Dann überprüfen Sie ViewScope, SessionScope oder ApplicationScope. Der Code versucht definitiv, ein Document-Objekt zu serialisieren, das beweist der Stack-Trace. Wenn es sich nicht in Ihrer verwalteten Bean befindet, versuchen Sie, es in einer Bereichsvariablen zu speichern. –

+0

Document.docAsMap() könnte Domino-Objekt drin haben? es ist nur ein Ort, den ich mir vorstellen könnte, es verbirgt sich ... –

Verwandte Themen