[jboss-user] [JBoss jBPM] - Re: workaround for StackOverflow exception
insanely.freak
do-not-reply at jboss.com
Mon Jan 12 08:58:43 EST 2009
Hi,
I am gettin a Stakcoverflow exception when I try to use ActionHandler or DecisionHandlers/AssignmentHandler in my code.
Following is my processdefinition file
<?xml version="1.0" encoding="UTF-8"?>
| <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="timer_19">
| <start-state name="start">
| <transition to="decision" ></transition>
| </start-state>
| <decision name="decision">
| <handler class="com.workflow.CostCenterDecisionHandler"></handler>
| <transition to="to_end" name="to_end">
| <condition>
| <![CDATA[to_end]]>
| </condition>
| </transition>
| <transition to="taskNode" name="taskNode">
| <condition>
| <![CDATA[taskNode]]>
| </condition>
| </transition>
| </decision>
| <task-node name="taskNode" create-tasks="true">
| <task name="approve_task" description="hula">
| <assignment class="com.workflow.CostCenterAssignmentHandler">
| </assignment>
| </task>
| <transition to="decision" name="decision"/>
| </task-node>
| <end-state name="to_end"></end-state>
| </process-definition>[/url]
Here I am trying to come back to task node with new task untill decision node explicitly decides to move to end state.
I have tested this using junit in Eclipse it works fine. Only when I persist in db and then try to end a task by fetching task instance using Id from db, it gives me STACKOVERFLOW exception.
Following is the stachtrace
| Caused by: java.lang.StackOverflowError
| at java.lang.System.arraycopy(Native Method)
| at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
| at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:490)
| at java.lang.StringBuffer.append(StringBuffer.java:302)
| at org.apache.log4j.helpers.ISO8601DateFormat.format(ISO8601DateFormat.java:124)
| at java.text.DateFormat.format(DateFormat.java:314)
| at org.apache.log4j.helpers.PatternParser$DatePatternConverter.convert(PatternParser.java:436)
| at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:56)
| at org.apache.log4j.PatternLayout.format(PatternLayout.java:495)
| at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:292)
| at org.apache.log4j.DailyRollingFileAppender.subAppend(DailyRollingFileAppender.java:349)
| at org.apache.log4j.WriterAppender.append(WriterAppender.java:150)
| at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
| at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
| at org.apache.log4j.Category.callAppenders(Category.java:187)
| at org.apache.log4j.Category.forcedLog(Category.java:372)
| at org.apache.log4j.Category.log(Category.java:864)
| at org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:137)
| at org.hibernate.loader.Loader.loadCollection(Loader.java:1911)
| at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:71)
| at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)
| at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
| at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1627)
| at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
| at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
| at org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161)
| at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127)
| at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431)
| at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441)
| at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
| at org.jbpm.graph.def.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>)
| at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47)
| at java.lang.ClassLoader.getResource(ClassLoader.java:977)
| at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
| at org.apache.commons.logging.LogFactory$3.run(LogFactory.java:627)
| at java.security.AccessController.doPrivileged(Native Method)
| at org.apache.commons.logging.LogFactory.getResourceAsStream(LogFactory.java:623)
| at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:281)
| at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
| at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:79)
| at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63)
| at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514)
| at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576)
| at org.hibernate.loader.Loader.doQuery(Loader.java:661)
| at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
| at org.hibernate.loader.Loader.loadCollection(Loader.java:1919)
| at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:71)
| at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)
| at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
| at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1627)
| at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
| at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
| at org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161)
| at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127)
| at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431)
| at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441)
| at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
| at org.jbpm.graph.def.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>)
| at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47)
| at java.lang.ClassLoader.getResource(ClassLoader.java:977)
| at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
| at org.apache.commons.logging.LogFactory$3.run(LogFactory.java:627)
| at java.security.AccessController.doPrivileged(Native Method)
| at org.apache.commons.logging.LogFactory.getResourceAsStream(LogFactory.java:623)
| at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:281)
| at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
| at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:79)
| at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63)
| at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514)
| at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576)
| at org.hibernate.loader.Loader.doQuery(Loader.java:661)
| at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
| at org.hibernate.loader.Loader.loadCollection(Loader.java:1919)
| at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:71)
| at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)
| at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
| at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1627)
| at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
| at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
| at org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161)
| at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127)
| at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431)
| at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441)
| at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
| at org.jbpm.graph.def.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>)
| at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47)
|
I get a very huge stack trace with above repeating block of trace.
I have already spent 4 days debuging the issue. Any input/help from any body is appreciated.
ThankX in advance
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201003#4201003
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201003
More information about the jboss-user
mailing list