a session problem
jeffery.wu Jul 26, 2006 6:09 AMi have used the framework as "spring in the air"
when i run testcase as follow, there was the "session is closed".
how can i resolve it?
import java.util.Iterator;
import java.util.List;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
import com.macrowise.common.spring.SpringTestCase;
public class ProcessManagerTest extends SpringTestCase {
private ProcessManager processManager;
private JbpmConfiguration jbpmConfiguration;
public static void main(String[] args) {
junit.textui.TestRunner.run(ProcessManagerTest.class);
System.exit(0);
}
protected void setUp() {
try {
super.setUp();
springSetup(new String[] { "beans/applicationContext.xml",
"beans/persist.xml", "beans/jbpm.xml", "beans/jbpm/ProcessManager.xml" });
processManager = (ProcessManager) getBean("processManager");
jbpmConfiguration = (JbpmConfiguration) getBean("jbpmConfiguration");
beginTransaction();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void tearDown() {
try {
super.tearDown();
rollback();
} catch (Exception e) {
e.printStackTrace();
}
}
public void testDeploy() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
ProcessDefinition processDefinition = ProcessDefinition
.parseXmlString("<process-definition name='hello world'>"
+ " <start-state name='start'>"
+ " <transition to='s' />" + " </start-state>"
+ " <state name='s'>" + " <transition to='end' />"
+ " </state>" + " <end-state name='end' />"
+ "</process-definition>");
jbpmContext.deployProcessDefinition(processDefinition);
}
public void testFindAllProcess() {
List allProcessList = processManager.findAllProcess();
assertNotNull(allProcessList);
}
public void testGetProcess() {;
List allProcessList = processManager.findAllProcess();
for (Iterator iter = allProcessList.iterator(); iter.hasNext();) {
ProcessDefinition element = (ProcessDefinition) iter.next();
ProcessDefinition testProcess = processManager.getProcess(element.getId());
assertEquals(testProcess, element);
}
}
}
org.jbpm.JbpmException: couldn't find all process definitions at org.jbpm.db.GraphSession.findAllProcessDefinitions(GraphSession.java:214) at com.macrowise.common.bpm.jbpm.manager.ProcessManagerImpl.findAllProcess(ProcessManagerImpl.java:15) at com.macrowise.common.bpm.jbpm.manager.ProcessManagerTest.testFindAllProcess(ProcessManagerTest.java:65) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:120) at junit.framework.TestSuite.runTest(TestSuite.java:230) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: org.hibernate.SessionException: Session is closed! at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:49) at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1222) at org.jbpm.db.GraphSession.findAllProcessDefinitions(GraphSession.java:209) ... 20 more
the testDeploy() can run successfully. But the testFindAllProcess() and testGetProcess() will be failed(session is closed)