ClassCast Problem
candersen Aug 29, 2007 6:16 AMHello,
I am encountering a strange problem. I wrote a very simple Processdefinition:
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="" name="objectTest"> <start-state name="start"> <event type="node-leave"> <action name="action1" class="com.test.SetUpActionHandler"/> </event> <transition name="" to="node1"></transition> </start-state> <end-state name="end"> </end-state> <node name="node1"> <action class="com.test.ObjectTestActionHandler" /> <transition name="" to="end"></transition> </node> </process-definition>
In the SepUpActionHandler class I declare a simple TestObject and put it into the ContextInstance:
package com.test; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class SetUpActionHandler implements ActionHandler { private static final long serialVersionUID = 1L; public void execute(ExecutionContext executionContext) throws Exception { TestObject to = new TestObject(); to.setText("TestString"); executionContext.getContextInstance().setVariable("Test", to); } }
The TestObject itself is a very minimal serializable object:
package com.test; import java.io.Serializable; public class TestObject implements Serializable { private static final long serialVersionUID = 1L; private String _text = "leer"; public TestObject() { } public String getText() { return _text; } public void setText(String s) { _text = s; } }
And finally, in the ObjectTestActionHandler, I retrieve the TestObject from the ContextInstance:
package com.test; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class ObjectTestActionHandler implements ActionHandler { private static final long serialVersionUID = 1L; public void execute(ExecutionContext executionContext) throws Exception { Object o = executionContext.getContextInstance().getVariable("Test"); TestObject to = (TestObject) o; executionContext.getToken().signal(); } }
When I execute this process in Eclipse, everything runs fine, there are no errors. But when I deploy it to a JBoss AS (4.0.4) and start it using the jbpm-web-console, I get a ClassCastException with the message: "com.test.TestObject cannot be cast to com.test.TestObject"
The Exception is thrown by the ObjectTestActionHandler in the line where the casting is done:
TestObject to = (TestObject) o;
Does anybody know why this happens?
Regards,
Claus Andersen