Howto MBean

2005-03-20 Thread Kris Balle Kristensen
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(-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]



Re: Howto MBean

2005-03-20 Thread Bill Barker
Tomcat doesn't have an automatic MBean deployment option for a Context. 
You'll need a ServletContextListener (or otherwise) to register your 
application MBeans.

Note that with commons-modeler 1.1 (which ships with Tomcat 5), it is no 
longer necessary to include your mbeans-descriptor.xml in the 
ServerLifecycleListener.  commons-modeler will automagically load it when 
your MBeans are registered.

Kris Balle Kristensen [EMAIL PROTECTED] wrote in message 
news:[EMAIL PROTECTED]
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(-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,