为什么在使用Activiti BPM启动Tomcat 7时会出现此异常

时间:2013-12-18 12:38:22

标签: tomcat7 activiti

我将Activiti war文件复制到Tomcat webapps并且它启动正常,我可以打开Activiti Explorer。

当我在为Activiti配置Eclipse之后重新打开Tomcat 7(帮助 - >安装新软件 - > http://activiti.org/designer/update/),并重启Tomcat时,我得到一个例外: -

引起:java.io.NotSerializableException:org.activiti.workflow.simple.converter.json.SimpleWorkflowJsonConverter at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream) .java:1547)at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:15 08)at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177 )在java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)

有什么想法吗?

感谢。

PS: - 我在另一个帖子中读到了这个评论的类似错误: -

“您包含的例外只是一个会话序列化问题,所以没什么大不了的。 但是你遇到了真正的问题吗?“。

2 个答案:

答案 0 :(得分:2)

当Tomcat关闭时,它会尝试将对象保留在磁盘上的用户会话中。 同样,当它重新启动时,它会尝试将这些持久化对象从磁盘加载到内存中。

这称为[de-]序列化(或[un-]编组)。

要实现这些操作,要[de-]序列化的对象必须实现java.io.Serializable接口。

在这种特殊情况下,似乎类org.activiti.workflow.simple.converter.json.SimpleWorkflowJsonConverter没有实现此接口。

要阻止磁盘[de-]序列化,只需取消注释 $ {tomcat-dir] /conf/context.xml 文件中的“Manager”XML元素。

(来源:http://mihail.stoynov.com/2011/04/11/disable-session-persistence-in-tomcat/

答案 1 :(得分:1)

打开activiti-explorer.war并更改META-INF / context.xml,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<Context reloadable="false">

    <!-- Disable session persistence -->
    <Manager pathname="" />

</Context>

要了解这会如​​何影响部署,请参阅此文档: http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Persistence_Across_Restarts