You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/08/09 19:39:07 UTC
cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/mx DynamicMBeanProxy.java
costin 2002/08/09 10:39:07
Modified: util/java/org/apache/tomcat/util/mx DynamicMBeanProxy.java
Log:
Added 'createMBean( Object, domain, name )'.
Any component that wants to be visible in JMX needs one line
in the constructor:
org.apache.tomcat.util.mx.DynamicMBeanProxy.createMBean( this, "domain", "name" );
( you can do that for other components as well ).
I'll eventually refactor this into 2 classes and move to modeler,
with one class beeing independent of JMX.
Revision Changes Path
1.4 +29 -2 jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/mx/DynamicMBeanProxy.java
Index: DynamicMBeanProxy.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/mx/DynamicMBeanProxy.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DynamicMBeanProxy.java 2 Jul 2002 19:56:24 -0000 1.3
+++ DynamicMBeanProxy.java 9 Aug 2002 17:39:07 -0000 1.4
@@ -112,7 +112,15 @@
if( real==null ) return null;
- name=real.getClass().getName();
+ name=generateName(real.getClass());
+ return name;
+ }
+
+ /** If a name was not provided, generate a name based on the
+ * class name and a sequence number.
+ */
+ public String generateName(Class realClass) {
+ name=realClass.getName();
name=name.substring( name.lastIndexOf( ".") + 1 );
Integer iInt=(Integer)instances.get(name );
if( iInt!= null ) {
@@ -125,12 +133,30 @@
}
return name;
}
+
+ public static void createMBean( Object proxy, String domain, String name ) {
+ try {
+ DynamicMBeanProxy mbean=new DynamicMBeanProxy();
+ mbean.setReal( proxy );
+ if( name!=null ) {
+ mbean.setName( name );
+ }
+
+ mbean.registerMBean( domain );
+ } catch( Throwable t ) {
+ log.error( "Error creating mbean ", t );
+ }
+ }
public void registerMBean( String domain ) {
try {
// XXX use aliases, suffix only, proxy.getName(), etc
ObjectName oname=new ObjectName( domain + ": name=" + getName());
-
+
+ if( getMBeanServer().isRegistered( oname )) {
+ log.info("Unregistering " + oname );
+ getMBeanServer().unregisterMBean( oname );
+ }
getMBeanServer().registerMBean( this, oname );
} catch( Throwable t ) {
log.error( "Error creating mbean ", t );
@@ -298,6 +324,7 @@
throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
{
if( methods==null ) init();
+ // XXX Send notification !!!
Method m=(Method)setAttMap.get( attribute.getName() );
if( m==null ) throw new AttributeNotFoundException(attribute.getName());
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>