[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