[jboss-svn-commits] JBL Code SVN: r30477 - labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Dec 4 12:29:24 EST 2009


Author: kevin.conner at jboss.com
Date: 2009-12-04 12:29:24 -0500 (Fri, 04 Dec 2009)
New Revision: 30477

Modified:
   labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
Log:
Fix RuleAgent shutdown: JBESB-3011

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java	2009-12-04 16:19:12 UTC (rev 30476)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java	2009-12-04 17:29:24 UTC (rev 30477)
@@ -209,19 +209,6 @@
 	/**
 	 * This shows how rules are loaded up from a deployed package.
 	 */
-	public RuleBase loadRuleBaseFromRuleAgent(final String ruleAgentProperties) throws IOException, Exception 
-	{
-		return RuleAgent.newRuleAgent( "/" + ruleAgentProperties, new LogAgentEventListener() ).getRuleBase();
-	}
-	
-	public RuleBase loadRuleBaseFromRuleAgent(final Properties ruleAgentProperties) throws IOException, Exception 
-	{
-		return RuleAgent.newRuleAgent( ruleAgentProperties, new LogAgentEventListener() ).getRuleBase();
-	}
-	
-	/**
-	 * This shows how rules are loaded up from a deployed package.
-	 */
 	public RuleAgent createRuleAgent(final String ruleAgentProperties) throws IOException, Exception 
 	{
 		return RuleAgent.newRuleAgent( "/" + ruleAgentProperties, new LogAgentEventListener() );

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java	2009-12-04 16:19:12 UTC (rev 30476)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java	2009-12-04 17:29:24 UTC (rev 30477)
@@ -46,6 +46,7 @@
 import org.jboss.soa.esb.lifecycle.LifecycleResource;
 import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
 import org.jboss.soa.esb.lifecycle.LifecycleResourceFactory;
+import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.rules.RuleInfo;
 import org.jboss.soa.esb.services.rules.RuleService;
@@ -808,13 +809,28 @@
 		RuleAgent ruleAgent = ruleAgents.get( ruleAgentProperties );
 		if ( ruleAgent == null )
 		{
-			ruleAgent = DroolsRuleBaseHelper.getInstance().createRuleAgent( ruleAgentProperties );
-			ruleAgents.put( ruleAgentProperties, ruleAgent );
+			synchronized (ruleAgents)
+			{
+				ruleAgent = ruleAgents.get( ruleAgentProperties );
+				if (ruleAgent == null)
+				{
+					ruleAgent = DroolsRuleBaseHelper.getInstance().createRuleAgent( ruleAgentProperties );
+					ruleAgents.put( ruleAgentProperties, ruleAgent );
+				}
+			}
 		}
 
 		RuleBase currentRuleBase = ruleAgent.getRuleBase();
 		//	always update the cache as the rulebase might have been updated.
-		getCachedRuleBases().put( ruleAgentProperties, currentRuleBase );
+		final RuleBase origRuleBase = getCachedRuleBases().put( ruleAgentProperties, currentRuleBase );
+		if ((origRuleBase != currentRuleBase) && (origRuleBase != null))
+		{
+			if (log.isInfoEnabled())
+			{
+				log.info("destroying stateful session for " + LifecycleResourceManager.getSingleton().getIdentity());
+			}
+			disposeStatefulSessions(origRuleBase.getStatefulSessions()) ;
+		}
 		return currentRuleBase;
 	}
 
@@ -868,7 +884,10 @@
 		        final Collection<RuleBase> values = resource.values();
 		        for (RuleBase ruleBase : values)
                 {
-                    log.info("destroying stateful session for " + lifecycleIdentity);
+                    if (log.isInfoEnabled())
+                    {
+                        log.info("destroying stateful session for " + lifecycleIdentity);
+                    }
     		        disposeStatefulSessions(ruleBase.getStatefulSessions());
                 }
 		        resource.clear();
@@ -923,8 +942,12 @@
                 final Collection<RuleAgent> values = resource.values();
                 for (RuleAgent ruleAgent : values)
                 {
-                    log.info("destroying stateful session for " + lifecycleIdentity);
+                    if (log.isInfoEnabled())
+                    {
+                        log.info("destroying stateful session for " + lifecycleIdentity);
+                    }
     		        disposeStatefulSessions(ruleAgent.getRuleBase().getStatefulSessions());
+                    ruleAgent.stopPolling() ;
                 }
                 resource.clear();
             }



More information about the jboss-svn-commits mailing list