User: mnf999
Date: 01/08/29 16:16:15
Added: src/main/org/jboss/system Service.java ServiceMBean.java
ServiceMBeanSupport.java
Log:
The Service classes int eh system directory
Revision Changes Path
1.1 jboss/src/main/org/jboss/system/Service.java
Index: Service.java
===================================================================
/*
* JBoss, the OpenSource J2EE server
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.system;
/**
* The Service interface for the JBOSS-SYSTEM
*
* @see <related>
* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>.
* @version $Revision: 1.1 $
*
* <p><b>20010830 marc fleury:</b>
* <ul>
* initial import
* <li>
* </ul>
*/
public interface Service
{
public void init()
throws Exception;
public void start()
throws Exception;
public void stop();
public void destroy();
}
1.1 jboss/src/main/org/jboss/system/ServiceMBean.java
Index: ServiceMBean.java
===================================================================
/*
* JBoss, the OpenSource J2EE server
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.system;
/** An interface describing a JBoss service MBean.
@see org.jboss.system.Service
@see org.jboss.system.ServiceMBeanSupport
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>.
* @author <a href="mailto:[EMAIL PROTECTED]">Scott Stark</a>.
* @version $Revision: 1.1 $
*/
public interface ServiceMBean
extends Service
{
// Constants -----------------------------------------------------
public static final String[] states = {"Stopped","Stopping","Starting","Started"};
public static final int STOPPED = 0;
public static final int STOPPING = 1;
public static final int STARTING = 2;
public static final int STARTED = 3;
// Public --------------------------------------------------------
public String getName();
public int getState();
public String getStateString();
}
1.1 jboss/src/main/org/jboss/system/ServiceMBeanSupport.java
Index: ServiceMBeanSupport.java
===================================================================
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.system;
import java.util.Date;
import javax.management.NotificationBroadcasterSupport;
import javax.management.AttributeChangeNotification;
import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.log4j.Category;
import org.jboss.logging.Log;
import org.jboss.logging.LogToCategory;
import org.jboss.logging.log4j.JBossCategory;
/** An abstract base class JBoss services can subclass to implement a
service that conforms to the ServiceMBean interface. Subclasses must
override {@link #getName() getName} method and should override
{@link #initService() initService}, {@link #startService() startService},
{@link #stopService() stopService}, {@link #destroyService() destroyService}
as approriate.
@see org.jboss.util.ServiceMBean
<a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
@author <a href="mailto:[EMAIL PROTECTED]">Scott Stark</a>.
@version $Revision: 1.1 $
Revisions:
20010619 scott.stark: use the full service class name as the log4j category name
*/
public abstract class ServiceMBeanSupport
extends NotificationBroadcasterSupport
implements ServiceMBean, MBeanRegistration
{
// Attributes ----------------------------------------------------
private int state;
private MBeanServer server;
private int id = 0;
protected Log log;
protected JBossCategory category;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public ServiceMBeanSupport()
{
category = (JBossCategory) JBossCategory.getInstance(getClass());
log = new LogToCategory(category);
}
// Public --------------------------------------------------------
public abstract String getName();
public MBeanServer getServer()
{
return server;
}
public int getState()
{
return state;
}
public String getStateString()
{
return states[state];
}
public void init()
throws Exception
{
log.setLog(log);
category.info("Initializing");
try
{
initService();
} catch (Exception e)
{
category.error("Initialization failed", e);
throw e;
} finally
{
log.unsetLog();
}
category.info("Initialized");
}
public void start()
throws Exception
{
if (getState() != STOPPED)
return;
state = STARTING;
//AS It seems that the first attribute is not needed anymore and use a long
instead of a Date
sendNotification(new AttributeChangeNotification(this, id++, new
Date().getTime(), getName()+" starting", "State", "java.lang.Integer", new
Integer(STOPPED), new Integer(STARTING)));
category.info("Starting");
log.setLog(log);
try
{
startService();
} catch (Exception e)
{
state = STOPPED;
//AS It seems that the first attribute is not needed anymore and use a
long instead of a Date
sendNotification(new AttributeChangeNotification(this, id++, new
Date().getTime(), getName()+" stopped", "State", "java.lang.Integer", new
Integer(STARTING), new Integer(STOPPED)));
category.error("Stopped", e);
throw e;
} finally
{
log.unsetLog();
}
state = STARTED;
//AS It seems that the first attribute is not needed anymore and use a long
instead of a Date
sendNotification(new AttributeChangeNotification(this, id++, new
Date().getTime(), getName()+" started", "State", "java.lang.Integer", new
Integer(STARTING), new Integer(STARTED)));
category.info("Started");
}
public void stop()
{
if (getState() != STARTED)
return;
state = STOPPING;
//AS It seems that the first attribute is not needed anymore and use a long
instead of a Date
sendNotification(new AttributeChangeNotification(this, id++, new
Date().getTime(), getName()+" stopping", "State", "java.lang.Integer", new
Integer(STARTED), new Integer(STOPPING)));
category.info("Stopping");
log.setLog(log);
try
{
stopService();
} catch (Throwable e)
{
category.error(e);
}
state = STOPPED;
//AS It seems that the first attribute is not needed anymore and use a long
instead of a Date
sendNotification(new AttributeChangeNotification(this, id++, new
Date().getTime(), getName()+" stopped", "State", "java.lang.Integer", new
Integer(STOPPING), new Integer(STOPPED)));
category.info("Stopped");
log.unsetLog();
}
public void destroy()
{
if (getState() != STOPPED)
stop();
category.info("Destroying");
log.setLog(log);
try
{
destroyService();
} catch (Exception e)
{
category.error(e);
}
log.unsetLog();
category.info("Destroyed");
}
public ObjectName preRegister(MBeanServer server, ObjectName name)
throws java.lang.Exception
{
name = getObjectName(server, name);
this.server = server;
return name;
}
public void postRegister(java.lang.Boolean registrationDone)
{
if (!registrationDone.booleanValue())
{
category.info( "Registration is not done -> destroy" );
destroy();
}
}
public void preDeregister()
throws java.lang.Exception
{
}
public void postDeregister()
{
destroy();
}
// Protected -----------------------------------------------------
protected ObjectName getObjectName(MBeanServer server, ObjectName name)
throws javax.management.MalformedObjectNameException
{
return name;
}
protected void initService()
throws Exception
{
}
protected void startService()
throws Exception
{
}
protected void stopService()
{
}
protected void destroyService()
{
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development