[jboss-svn-commits] JBL Code SVN: r8660 - in labs/jbossesb/trunk/product/core/listeners/src: . org/jboss/internal/soa/esb/listeners org/jboss/soa/esb/listeners/message

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 3 11:18:31 EST 2007


Author: kevin.conner at jboss.com
Date: 2007-01-03 11:18:26 -0500 (Wed, 03 Jan 2007)
New Revision: 8660

Added:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerService.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerServiceMBean.java
Modified:
   labs/jbossesb/trunk/product/core/listeners/src/jboss-service.xml
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java
Log:
Changes for SAR deployment: JBESB-313

Modified: labs/jbossesb/trunk/product/core/listeners/src/jboss-service.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/jboss-service.xml	2007-01-03 16:18:09 UTC (rev 8659)
+++ labs/jbossesb/trunk/product/core/listeners/src/jboss-service.xml	2007-01-03 16:18:26 UTC (rev 8660)
@@ -6,13 +6,14 @@
   	     name="jboss.org:service=ConfigurationController"
   	     description="Configuration controller which generated the config files for the listener and gateway controllers">
     <attribute name="ConfigurationFile">jbossesb.xml</attribute>
+    <depends>jboss.org:service=JuddiRMI</depends>
   </mbean>
   <!--  Starts the listener controler -->
-  <mbean code="org.jboss.soa.esb.listeners.message.EsbListenerControllerService" 
-  	     name="jboss.org:service=EsbListenerController"
+  <mbean code="org.jboss.soa.esb.listeners.message.ListenerManagerService" 
+  	     name="jboss.org:service=ListenerManager"
   	     description="ESB Aware Listener">
     <attribute name="MessageAwareConfigFile">jbossesb-listener.xml</attribute>
-    <depends>jboss.jca:service=DataSourceBinding,name=juddiDB</depends>
+    <depends>jboss.org:service=ConfigurationController</depends>
     <depends>jboss.jca:service=DataSourceBinding,name=JBossESBDS</depends>
   </mbean>
   <!--  Starts the gateway controller -->
@@ -20,13 +21,13 @@
          name="jboss.org:service=GatewayListenerController"
          description="Gateway Listener">
     <attribute name="GatewayConfigFile">jbossesb-gateway.xml</attribute>
-    <depends>jboss.jca:service=DataSourceBinding,name=juddiDB</depends>
     <depends>jboss.jca:service=DataSourceBinding,name=JBossESBDS</depends>
+    <depends>jboss.org:service=ListenerManager</depends>
   </mbean>
   <!--  Registers the Juddi RMI Service to JNDI -->
   <mbean code="org.jboss.soa.esb.listeners.JuddiRMIService" 
          name="jboss.org:service=JuddiRMI"
-         description="Gateway Listener">
+         description="Juddi RMI Service">
     <depends>jboss.jca:service=DataSourceBinding,name=juddiDB</depends>
   </mbean>
   <loader-repository>

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java	2007-01-03 16:18:09 UTC (rev 8659)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/internal/soa/esb/listeners/DefaultListenerManager.java	2007-01-03 16:18:26 UTC (rev 8660)
@@ -113,6 +113,7 @@
 		_pauseTimeMillis = 50;
 		// default interval between parameter reloads = 6 minutes
 		_defaultReloadIntervalMillis = 180000;
+		_defaultInitialIntervalMillis = 10000;
 
 		_config = config;
 		_status = State.Loading_parameters;
@@ -161,11 +162,18 @@
 			throws IOException, ParamRepositoryException, SAXException
 	{
 		String sXml = ParamRepositoryFactory.getInstance().get(reposParam);
-		ConfigTree config = ConfigTree.fromXml(sXml);
-
-		config.setAttribute("configSource", "param-repository:" + reposParam);
-
-		return config;
+		if (sXml != null)
+		{
+			ConfigTree config = ConfigTree.fromXml(sXml);
+	
+			config.setAttribute("configSource", "param-repository:" + reposParam);
+	
+			return config;
+		}
+		else
+		{
+			return null ;
+		}
 	} // ____________________________
 
 	/*
@@ -177,6 +185,11 @@
 	{
 		// We've just loaded - set to false until next reload requested
 		_reloadRequested = false;
+		if (p_oP == null)
+		{
+			setNextReloadTime(null) ;
+			return ;
+		}
 		if (null != _parametersName)
 		{
 			File file = new File(_parametersName);
@@ -199,7 +212,7 @@
 		_endTimeStamp = (null == sEndT) ? Long.MAX_VALUE : s_oDateParse.parse(
 				sEndT).getTime();
 
-		for (ConfigTree tree : _config.getAllChildren())
+		for (ConfigTree tree : p_oP.getAllChildren())
 		{
 			String gateway = tree.getAttribute(PARM_GATEWAY_CLASS);
 			String listener = tree.getAttribute(PARM_LISTENER_CLASS);
@@ -222,22 +235,48 @@
 		// then reload every 10 minutes
 		// If there is a command queue, run until command is received
 
-		_sRldSecs = tree.getAttribute(PARM_RELOAD_SECS);
+		final boolean emitWarning ;
 		synchronized (_synchReload)
 		{
-			_nextReload = (null != _sRldSecs) ? System.currentTimeMillis()
-					+ 1000 * Long.parseLong(_sRldSecs)
-					: (null == _commandQueue) ? Long.MAX_VALUE : System
-							.currentTimeMillis()
-							+ _defaultReloadIntervalMillis;
+			emitWarning = _emitWarning ;
+			_emitWarning = false ;
+			
+			if (tree == null)
+			{
+				_sRldSecs = null ;
+				_nextReload = System.currentTimeMillis() + _defaultInitialIntervalMillis ;
+			}
+			else
+			{
+				_sRldSecs = tree.getAttribute(PARM_RELOAD_SECS);
+				if (_sRldSecs != null)
+				{
+					_nextReload = System.currentTimeMillis() + 1000 * Long.parseLong(_sRldSecs) ;
+				}
+				else if (_commandQueue != null)
+				{
+					_nextReload = System.currentTimeMillis() + _defaultReloadIntervalMillis ;
+				}
+				else
+				{
+					_nextReload = Long.MAX_VALUE ;
+				}
+			}
 		}
 
-		if (null == _sRldSecs)
+		if (emitWarning)
 		{
-			String sMsg = (null == _commandQueue) ? " -  Using default of "
-					+ _sRldSecs
-					: " - Listener will run until stopped by command sent to queue";
-			_logger.warn("No value specified for: " + PARM_RELOAD_SECS + sMsg);
+			if (tree == null)
+			{
+				_logger.warn("Deferring until configuration file present") ;
+			}
+			else if (null == _sRldSecs)
+			{
+				String sMsg = (null != _commandQueue) ? " -  Using default of "
+						+ _defaultReloadIntervalMillis
+						: " - Listener will run until stopped by command sent to queue";
+				_logger.warn("No value specified for: " + PARM_RELOAD_SECS + sMsg);
+			}
 		}
 
 	} // ____________________________
@@ -286,16 +325,19 @@
 			{
 				synchronized (_synchAllReady)
 				{
-					_childrenStarted = new HashMap<AbstractManagedListener, Boolean>();
-					for (ConfigTree oCurr : _config.getAllChildren())
+					if (_config != null)
 					{
-						String sClass = oCurr.getAttribute(PARM_LISTENER_CLASS);
-						if (Util.isNullString(sClass))
-							sClass = oCurr.getAttribute(PARM_GATEWAY_CLASS);
-						if (Util.isNullString(sClass))
-							continue;
-
-						tryToLaunchChildListener(oCurr, sClass);
+						_childrenStarted = new HashMap<AbstractManagedListener, Boolean>();
+						for (ConfigTree oCurr : _config.getAllChildren())
+						{
+							String sClass = oCurr.getAttribute(PARM_LISTENER_CLASS);
+							if (Util.isNullString(sClass))
+								sClass = oCurr.getAttribute(PARM_GATEWAY_CLASS);
+							if (Util.isNullString(sClass))
+								continue;
+	
+							tryToLaunchChildListener(oCurr, sClass);
+						}
 					}
 				}
 				try { waitUntilReady(1000); }
@@ -314,6 +356,10 @@
 			
 			if (_parametersName != null && isReloadNeeded())
 			{
+				synchronized(_synchReload)
+				{
+					_emitWarning = true ;
+				}
 				try
 				{
 					_status = State.Loading_parameters;
@@ -555,7 +601,10 @@
 
 		File paramFile = new File(_parametersName);
 		if (!paramFile.exists())
-			return refreshNextReload();
+		{
+			setNextReloadTime(_config);
+			return (_config != null) ;
+		}
 
 		// check the TS on the file.
 		Long previousTimeStamp = _paramFileTimeStamps.get(_parametersName);
@@ -704,10 +753,10 @@
 				allStarted = ((_childrenStarted == null) ? null : _childrenStarted.values());
 			}
 			
+			someChildPending = false;
+			
 			if (allStarted != null)
-			{		
-				someChildPending = false;
-				
+			{
 				for (Boolean curr : allStarted)
 				{
 					if (!Boolean.TRUE.equals(curr))
@@ -823,8 +872,12 @@
 	private Object _synchReload = new Short((short) 10);
 
 	private Object _synchAllReady = new Short((short) 20);
+	
+	private boolean _emitWarning = true ;
 
 	protected int _defaultReloadIntervalMillis;
+	
+	protected int _defaultInitialIntervalMillis;
 
 	protected int _pauseTimeMillis;
 

Added: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerService.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerService.java	2007-01-03 16:18:09 UTC (rev 8659)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerService.java	2007-01-03 16:18:26 UTC (rev 8660)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.listeners.message;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.listeners.ListenerManager;
+import org.jboss.soa.esb.listeners.ListenerUtil;
+import org.jboss.system.ServiceMBeanSupport;
+
+/**
+ * Service supporting the listener manager service.
+ */
+public class ListenerManagerService extends ServiceMBeanSupport implements ListenerManagerServiceMBean
+{
+	/**
+	 * The logger instance.
+	 */
+	private final Logger logger = Logger.getLogger(getClass()) ;
+	
+	/**
+	 * The listener manager.
+	 */
+	private ListenerManager	listenerManager ;
+	
+	/**
+	 * The message aware config file.
+	 */
+	private String messageAwareConfigFile = "jbossesb-listener.xml" ;
+	
+	/**
+	 * Starts the listener manager service.
+	 * @throws Exception For errors
+	 */
+	protected void startService()
+		throws Exception
+	{
+		final String confURL = System.getProperty("jboss.server.config.url") ;
+		final URI confDirURI = new URI(confURL) ;
+		final File confDir = new File(confDirURI) ;
+		final File configFile = new File(confDir, messageAwareConfigFile) ;
+		final String configFilePath = configFile.getAbsolutePath() ;
+		logger.info("Starting listener manager service, config file: " + configFilePath) ;
+		
+		listenerManager = ListenerUtil.launchManager(configFilePath, true) ;
+		listenerManager.waitUntilReady() ;
+	}
+	
+	/**
+	 * Stops the listener manager service.
+	 */
+	protected void stopService()
+	{
+		logger.info("Stopping listener manager service") ;
+		if (listenerManager != null)
+		{
+			listenerManager.requestEnd() ;
+		}
+	}
+	
+	/**
+	 * Get the message aware configuration file.
+	 * @return The message aware configuration file.
+	 */
+	public String getMessageAwareConfigFile()
+	{
+		return messageAwareConfigFile ;
+	}
+	
+	/**
+	 * Set the message aware configuration file.
+	 * @param messageAwareConfigFile The message aware configuration file.
+	 */
+	public void setMessageAwareConfigFile(final String messageAwareConfigFile)
+	{
+		this.messageAwareConfigFile = messageAwareConfigFile ;
+	}
+}


Property changes on: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerService.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerServiceMBean.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerServiceMBean.java	2007-01-03 16:18:09 UTC (rev 8659)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerServiceMBean.java	2007-01-03 16:18:26 UTC (rev 8660)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.listeners.message;
+
+import org.jboss.system.ServiceMBean;
+/**
+ * Interface for listener manager service MBean
+ */
+public interface ListenerManagerServiceMBean extends ServiceMBean
+{
+	/**
+	 * Get the message aware configuration file.
+	 * @return The message aware configuration file.
+	 */
+	public String getMessageAwareConfigFile() ;
+	/**
+	 * Set the message aware configuration file.
+	 * @param messageAwareConfigFile The message aware configuration file.
+	 */
+	public void setMessageAwareConfigFile(final String messageAwareConfigFile) ;
+}


Property changes on: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ListenerManagerServiceMBean.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list