package foo.mbean;
public interface FooServiceMBean {
public String getBar();
public void start();
public void stop();
}
Mule as MBean
An MBean is a named managed object representing a resource in an JMX environment. You can easily deploy an MBean with Mule by taking the following steps:
-
Create an MBean
-
Create service descriptor
-
Deploy MBean (as
.sar
) to application server -
Copy dependencies to the service’s classpath
This page describes these steps using the JBoss application server.
Creating a Simple MBean
To create an MBean, you need an interface and an implementation:
package foo.mbean;
import org.jboss.system.ServiceMBeanSupport;
import org.mule.config.spring.SpringXmlConfigurationBuilder;
import org.mule.api.MuleContext;
import org.mule.api.context.notification.ServerNotification;
public class FooService extends ServiceMBeanSupport implements FooServiceMBean {
public String getBar() {
return "bar";
}
public void start() {
this.getLog().info("MBean being started");
try {
MuleContext context = new DefaultMuleContextFactory().createMuleContext
(new SpringXmlConfigurationBuilder("foo-config.xml"));
context.registerListener(this);
context.start();
}
catch(Exception e) {
e.printStackTrace();
}
this.getLog().info("MBean started");
}
public void stop() {
this.getLog().info("MBean being stopped");
try {
if (context != null) {
context.stop();
context.dispose();
}
this.getLog().info("Done stopping Mule MBean Service!");
}
catch (Exception ex) {
this.getLog().error("Stopping Mule caused and exception!", ex);
}
}
}
The extension of ServiceMBeanSupport
is simply to provide you more control over the API provided by JBoss.
Creating JBoss Service Descriptor
You must create a service descriptor and add it to to META-INF/
. Following is a simple example:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="foo.FooService" name="foo:service=Foo">
</mbean>
</server>
Deploying MBean to JBoss
Based on the examples above, your distribution looks like this:
../foo./foo/FooService./foo/FooServiceMBean./META-INF./META-INF/jboss-service.xml
Package the distribution either as a JAR, which you can then rename to a *.sar
that you will eventually extract, or as a directory called <dirName>.sar
.
Copy the Dependencies
Follow the steps below to copy the dependencies and complete the deployment:
-
Copy your
<dirName>.sar/
directory toJBOSS_HOME/server/default/deploy/
. -
Copy all dependencies of Mule, such as
MULE_HOME/lib//.jar
to the<dirName>.sar/
directory -
Start JBoss. You will see the MBean appears in its MBean console.