[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