2013-05-16 35 views
2

我有一个Grails应用程序,它可以通过webflow以正确的方式做一些事情。所以一切正常的发展模式,我可以完成注册和对象序列化正常。但是,在生产模式下,使用ssl在tomcat 7上部署,当需要保存数据时会出现以下错误。简而言之,序列化不起作用。请帮忙,我现在不知道。 配置的唯一区别是,我强制https与生产中的弹簧安全。生产中的webflow序列化问题

------------------------------------- 
/var/log/tomcat7/stacktrace.log 
------------------------------------- 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.HashMap.writeObject(HashMap.java:1018) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.HashMap.writeObject(HashMap.java:1018) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) 
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:438) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1443) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1414) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.LinkedList.writeObject(LinkedList.java:960) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1443) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1414) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:186) 
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:679) 
2013-05-15 22:59:30,262 [http-bio-8080-exec-6] ERROR StackTrace - Full Stack Trace: 
org.springframework.webflow.execution.repository.snapshot.SnapshotCreationException: Could not serialize flow execution; make sure all objects stored in flow or flash scope are serializable 
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:186) 
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.io.NotSerializableException: org.codehaus.groovy.grails.webflow.engine.builder.ActionDelegate 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.HashMap.writeObject(HashMap.java:1018) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.HashMap.writeObject(HashMap.java:1018) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) 
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:438) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1443) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1414) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.LinkedList.writeObject(LinkedList.java:960) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1443) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1414) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    ... 5 more 
+0

您可以发布完整的堆栈跟踪? –

+0

已更新完整堆栈跟踪。 –

+0

“5更多”后没有什么?似乎根本原因不在堆栈跟踪中。 –

回答

1

UPDATE

它看起来像这个问题可能与the following JIRA问题。

请尝试在问题评论中提到的解决方法。


如果您的形式使用您的命令/域对象没有实现Serializable会显示这样的错误。

确保ALL对象(域,命令,模型对象)参与流动范围(你的向导,一个Webflow)实现序列化。

+0

所有对象都在实现可串行化,应用程序在dev模式下运行良好,因为它在主题中指定 –

+0

pb与prod中的集群模式相关:webflow需要使用hibernate会话名称来在tomcat单元之间序列化对象。奇怪和没有记录的: \t

+0

在找到这个东西之前,我做了transient的所有beforeInsert(),它没有改变我的应用程序的错误,但它这样更好。谢谢 –

0
<hibernate-configuration> <session-factory name="sessionFactory"> 

没有为一个开放JIRA票:http://jira.grails.org/browse/GPWEBFLOW-85

+1

在这种情况下,你应该接受你自己的答案。另外,你很难猜测你正在使用你的问题中的一些Hibernate映射。如果您在问题中提供了有用的信息,那么可以更容易地找出问题所在。 – rimero