[jboss-svn-commits] JBL Code SVN: r38277 - labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 31 15:23:42 EST 2013
Author: tcunning
Date: 2013-01-31 15:23:42 -0500 (Thu, 31 Jan 2013)
New Revision: 38277
Modified:
labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java
Log:
JBESB-3901
jbpm5 sessions should be static by processDefName.
Modified: labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java 2013-01-31 10:45:03 UTC (rev 38276)
+++ labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java 2013-01-31 20:23:42 UTC (rev 38277)
@@ -24,6 +24,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import javax.naming.InitialContext;
@@ -74,8 +75,9 @@
protected ConfigTree configTree;
/* ksession */
- public static StatefulKnowledgeSession _ksession = null;
+ public static Hashtable<String, StatefulKnowledgeSession> _ksession = new Hashtable<String, StatefulKnowledgeSession>();
public static WorkItemHandler khandler = null;
+ public KnowledgeBase kbase = null;
/* Defaults are HornetQ default settings to match the BRMS defaults */
public static final String DEFAULT_HANDLER_CLASS = "org.jbpm.task.service.hornetq.CommandBasedHornetQWSHumanTaskHandler";
@@ -89,7 +91,6 @@
protected String entityFactoryName;
protected String processDefName;
- protected KnowledgeBase kbase;
protected KnowledgeBuilder kbuilder;
protected KnowledgeSessionConfiguration config;
@@ -120,26 +121,28 @@
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(processDefName), ResourceType.BPMN2);
- kbase = kbuilder.newKnowledgeBase();
+ kbase = kbuilder.newKnowledgeBase();
// Create session
- synchronized (this) {
- if (_ksession == null) {
- _ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, config, kenvironment);
+ StatefulKnowledgeSession mySession = null;
+ synchronized (this) {
+ if (!_ksession.contains(processDefName)) {
+ mySession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, config, kenvironment);
try {
- khandler = getHandler(_ksession);
+ khandler = getHandler(mySession);
} catch (Exception e) {
throw new ActionLifecycleException(e);
}
- logger.debug("Session id: " + _ksession.getId());
+ logger.debug("Session id: " + mySession.getId());
// Register ESB WorkItemHandler as well
ESBServiceWorkItemHandler esbhandler = new ESBServiceWorkItemHandler();
ESBActionWorkItemHandler actionhandler = new ESBActionWorkItemHandler();
- _ksession.getWorkItemManager().registerWorkItemHandler("JBossESB", esbhandler);
- _ksession.getWorkItemManager().registerWorkItemHandler("ESBAction", actionhandler);
- _ksession.getWorkItemManager().registerWorkItemHandler("Human Task", khandler);
+ mySession.getWorkItemManager().registerWorkItemHandler("JBossESB", esbhandler);
+ mySession.getWorkItemManager().registerWorkItemHandler("ESBAction", actionhandler);
+ mySession.getWorkItemManager().registerWorkItemHandler("Human Task", khandler);
+ _ksession.put(processDefName, mySession);
}
}
}
@@ -163,13 +166,13 @@
int sessionId = getSessionId(message);
- if (_ksession.getId() == sessionId) {
- ksession = _ksession;
+ if (_ksession.get(processDefName).getId() == sessionId) {
+ ksession = _ksession.get(processDefName);
} else if (sessionId >= 0) {
Environment tempEnv = getEnvironment(new HashMap<String, Object>());
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( sessionId, kbase, config, tempEnv );
} else {
- ksession = _ksession;
+ ksession = _ksession.get(processDefName);
}
return ksession;
}
More information about the jboss-svn-commits
mailing list