我正在用primefaces和web2.0做j2ee,现在遇到了这个错误
java.io.NotSerializableException: org.apache.derby.client.am.PreparedStatement40
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
java.util.HashMap.writeObject(Unknown Source)
sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeArray(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
java.util.HashMap.writeObject(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
com.sun.faces.renderkit.ClientSideStateHelper.doWriteState(ClientSideStateHelper.java:293)
com.sun.faces.renderkit.ClientSideStateHelper.writeState(ClientSideStateHelper.java:167)
com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:123)
com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:155)
com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:221)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:397)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)一些谷歌说我需要实现我在这个function.but中使用的所有可序列化的类我已经做了that.and这个错误看起来很普遍,我不能很清楚这个out.and不是真的理解下面的错误
org.apache.derby.client.am.PreparedStatement40发布于 2011-05-10 16:31:08
看起来您正在将一个(JDBC) PreparedStatement存储在一个正在序列化的对象中(可能是会话的一部分)。你应该把它移到其他地方,或者把它标记为暂时的(不要忘记,当它被恢复时,它将会丢失)。
发布于 2011-05-10 16:30:02
问题是,您试图序列化的对象引用了org.apache.derby.client.am.PreparedStatement40,,或者很可能引用了java.sql.Statement,这是该类实现的接口。您必须删除该引用才能使其正常工作
发布于 2011-05-10 17:17:59
线索就在这里:
StateManagerImpl.writeState可能是您在某个组件上设置了不适当的值。您可能需要在支持bean中显式调用setValue的地方使用EL绑定(根据发布的信息,我的猜测是最好的)。
JSF使用在请求之间持久化的有状态UI组件树。树结构和树上设置的任何值将在呈现响应阶段结束时保存。通常,数据保存在会话或隐藏表单域中。因此,组件上设置的任何值都必须是可序列化的。
https://stackoverflow.com/questions/5947191
复制相似问题