Hi there,
 
I have written a bunch of MBeans for JBoss, but I can't figure out how
to do it for Tomcat5 :(. I have google'd a lot of pages containing the
MBean keyword, but have yet to find a tutorial for MBeans deployed on
Tomcat5.
 
My scenario:
I need a persistent object in Tomcat (trigger mechanism) that will be
triggered when a certain time of day (like midnight) is up. Furthermore
I need some kind of cache for some of my beans. This cache should be
callable from any jsp page if so desired. I'm not sure if MBean would be
the right approach, but anyway this is what I normally use with JBoss. 
What I need is an MBean example written for Tomcat5 including example
descriptors for same. I have tried to do this myself, but it looks like
my Mbean doesn't get deployed on startup of Tomcat. I can't see it in
the Tomcat log.

In the test example below, the Mbean is just suppose to show the current
datetime when the getShowTime (attribute showTime) gets activated. Also
the System.outs should be printed out during init/start/stop/destroy of
this MBean, but nothing happens.

I have tried the following:

In server.xml I added the following:
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"
        
descriptors="/mbean/test/mbean-descriptors.xml"/>
  <Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

In mbean/test/mbean-descriptors.xml:
<mbean         name="mbean.test.ShowTimeMBean"
            className="org.apache.catalina.mbeans.ClassNameMBean"
          description="Shows the current time"
               domain="Catalina"
                group="ShowTime"
                 type="mbean.test.ShowTime">
    <attribute   name="timeNow"
          description="Shows the current time"
                 type="java.lang.String"
            writeable="false"/>
    <operation name="start" description="Start" impact="ACTION"
returnType="void" />
    <operation name="stop" description="Stop" impact="ACTION"
returnType="void" />
    <operation name="init" description="Init" impact="ACTION"
returnType="void" />
    <operation name="destroy" description="Destroy" impact="ACTION"
returnType="void" />
    <operation name="showDateTimeNow" description="showDateTimeNow"
impact="ACTION" returnType="java.lang.String" />
  </mbean>

In package test.mbean:
public class ShowTime {
    private String showTime;
    public String getShowTime()  {
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd
tt:mm:ss");
       showTime =  sdf.format(new Date());
       return showTime;
    }
    public void start() {
        System.out.println("start called..");
    }

    public void stop() {
        System.out.println("stop called..");
    }

    public void init() {
        System.out.println("init called..");
    }
    public void destroy() {
        System.out.println("destroy called..");
    }

}

public class ShowTimeMBean extends BaseModelMBean{
    String timeNow = null;
    protected MBeanServer mserver;
    protected ManagedBean managed;
    public ShowTimeMBean() throws MBeanException,
RuntimeOperationsException {
        initialize();
    }

    public ShowTimeMBean(ModelMBeanInfo modelMBeanInfo) throws
MBeanException, RuntimeOperationsException {
        super(modelMBeanInfo);
        initialize();
    }

    public ShowTimeMBean(String s) throws MBeanException,
RuntimeOperationsException {
        super(s);
        initialize();
    }

    public ShowTimeMBean(String s, ModelerSource modelerSource) throws
MBeanException, RuntimeOperationsException {
        super(s, modelerSource);
        initialize();
    }

    private void initialize() {
        registry = MBeanUtils.createRegistry();
        mserver = MBeanUtils.createServer();
        managed = registry.findManagedBean("ShowTime");

    }

    public void start() {
        System.out.println("ShowTimeMBean::start called..");
    }

    public void stop() {
        System.out.println("ShowTimeMBean::stop called..");
    }

    public void init() {
        System.out.println("ShowTimeMBean::init called..");
    }
    public void destroy() {
        System.out.println("ShowTimeMBean::destroy called..");
    }

    public String showDateTimeNow() {
        ShowTime st = (ShowTime)resource;
        timeNow = st.getShowTime();
        return timeNow;
    }

    public String getTimeNow() {
        return timeNow;
    }

}

Everything gets deployed using a .war file.
 
Can any of you point me in the right direction? 

Regards.
Kris
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to