Announcement Announcement Module
Collapse
No announcement yet.
exposing a complex data type Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • exposing a complex data type

    I'm new to JMX and have been reading online articles to understand Spring support for MBeans.

    I have a simple class HelloWorld shown below which I have exposed as MBean. This works well. The 'name' is displayed as an attribute for my bean and I am able to invoke the operations get/set for the 'name' property.

    Now I'd like to take it further with my complex type 'myProperties'. I'd like for each entry in the map 'myProperties' to be exposed as an attribute in the JMX Console.

    I found some code online that tells me how this can be done, but I'm looking for a way to do this in spring.
    http://weblogs.java.net/blog/emcmanu...l_example.html

    Can this be done?

    Code:
    @ManagedResource(objectName="TEST:name=HelloWorldMBean", description="HW Management Bean")
    public class HelloWorld {
     
      String name;
     
      Properties myProperties;
      
      @ManagedAttribute
      public void setName(String n) { name = n; }
     
      @ManagedAttribute
      public String getName() { return name; }
     
    }

    My Spring JMX xml file is;
    HTML Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans 
    	xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:util="http://www.springframework.org/schema/util"
    	xsi:schemaLocation="
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    	    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd
    		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
    
    
    	
      <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
        <property name="locateExistingServerIfPossible" value="true"></property>
      </bean>
    	
    
      <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
        <property name="autodetect" value="true"/>
        <property name="assembler" ref="assembler"/>
        <property name="namingStrategy" ref="namingStrategy"/>
        <property name="server" ref="mbeanServer" />  
      </bean>
    
      <bean id="testBean" class="test.HelloWorld">
      </bean> 
    
      <!-- (for Java 5+ annotations-based metadata) -->
      <bean id="jmxAttributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>
      
      <!-- will pick up the ObjectName from the annotation -->
      <bean id="namingStrategy" class="org.springframework.jmx.export.naming.MetadataNamingStrategy">
    	<property name="attributeSource" ref="jmxAttributeSource"/>
      </bean>
    	
      <bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
        <property name="attributeSource" ref="jmxAttributeSource"/>
      </bean>	
    	
    </beans>
    thanks.
Working...
X