2013-05-16 31 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