{"id":11,"date":"2006-03-09T12:04:00","date_gmt":"2006-03-09T12:04:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=11"},"modified":"2006-03-09T12:04:00","modified_gmt":"2006-03-09T12:04:00","slug":"managedresource-in-spring-is-really-cool","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2006\/03\/managedresource-in-spring-is-really-cool\/","title":{"rendered":"@ManagedResource in Spring is really cool"},"content":{"rendered":"<p>First, write a class and annotate it:<\/p>\n<p>package com.javatutor.spring.jmx;<\/p>\n<p>import java.util.HashMap;<\/p>\n<p>import java.util.Map;<\/p>\n<p>import org.springframework.jmx.export.annotation.ManagedAttribute;<\/p>\n<p>import org.springframework.jmx.export.annotation.ManagedOperation;<\/p>\n<p>import org.springframework.jmx.export.annotation.ManagedResource;<\/p>\n<p>@ManagedResource( objectName = &quot;com.javatutor.spring.jmx:name=StringMap&quot; )<\/p>\n<p>public class StringMapImpl<\/p>\n<p>{<\/p>\n<p>private Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();<\/p>\n<p>@ManagedAttribute<\/p>\n<p>public int getSize()<\/p>\n<p>{<\/p>\n<p>return map.size();<\/p>\n<p>}<\/p>\n<p>@ManagedOperation<\/p>\n<p>public String get( String key )<\/p>\n<p>{<\/p>\n<p>return map.get( key );<\/p>\n<p>}<\/p>\n<p>@ManagedOperation<\/p>\n<p>public String put( String key, String value )<\/p>\n<p>{<\/p>\n<p>return map.put( key, value );<\/p>\n<p>}<\/p>\n<p>public void remove( String key )<\/p>\n<p>{<\/p>\n<p>map.remove( key );<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Next, write a spring config file:<\/p>\n<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<\/p>\n<p>&lt;!DOCTYPE beans PUBLIC &quot;-\/\/SPRING\/\/DTD BEAN\/\/EN&quot;<\/p>\n<p>&quot;http:\/\/www.springframework.org\/dtd\/spring-beans.dtd&quot;&gt;<\/p>\n<p>&lt;beans&gt;<\/p>\n<p>&lt;bean id=&quot;StringMap&quot; class=&quot;com.javatutor.spring.jmx.StringMapImpl&quot; \/&gt;<\/p>\n<p>&lt;bean id=&quot;MBeanExporter&quot;<\/p>\n<p>class=&quot;org.springframework.jmx.export.MBeanExporter&quot;&gt;<\/p>\n<p>&lt;property name=&quot;assembler&quot; ref=&quot;MBeanInfoAssembler&quot; \/&gt;<\/p>\n<p>&lt;property name=&quot;autodetect&quot; value=&quot;true&quot; \/&gt;<\/p>\n<p>&lt;property name=&quot;namingStrategy&quot; ref=&quot;NamingStrategy&quot; \/&gt;<\/p>\n<p>&lt;\/bean&gt;<\/p>\n<p>&lt;bean id=&quot;AnnotationJmxAttributeSource&quot;<\/p>\n<p>class=&quot;org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource&quot;<\/p>\n<p>\/&gt;<\/p>\n<p>&lt;bean id=&quot;NamingStrategy&quot;<\/p>\n<p>class=&quot;org.springframework.jmx.export.naming.MetadataNamingStrategy&quot;&gt;<\/p>\n<p>&lt;property name=&quot;attributeSource&quot; ref=&quot;AnnotationJmxAttributeSource&quot; \/&gt;<\/p>\n<p>&lt;\/bean&gt;<\/p>\n<p>&lt;bean id=&quot;MBeanInfoAssembler&quot;<\/p>\n<p>class=&quot;org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler&quot;&gt;<\/p>\n<p>&lt;property name=&quot;attributeSource&quot; ref=&quot;AnnotationJmxAttributeSource&quot; \/&gt;<\/p>\n<p>&lt;\/bean&gt;<\/p>\n<p>&lt;\/beans&gt;<\/p>\n<p>Now the client:<\/p>\n<p>package com.javatutor;<\/p>\n<p>import javax.swing.JOptionPane;<\/p>\n<p>import org.springframework.context.ApplicationContext;<\/p>\n<p>import org.springframework.context.support.ClassPathXmlApplicationContext;<\/p>\n<p>import com.javatutor.spring.jmx.StringMapImpl;<\/p>\n<p>public class SpringWithJmxExample<\/p>\n<p>{<\/p>\n<p>public static void main( String[] args )<\/p>\n<p>{<\/p>\n<p>ApplicationContext beFac = new ClassPathXmlApplicationContext( &quot;springJmx.xml&quot;<\/p>\n<p>);<\/p>\n<p>StringMapImpl cacheBean = (StringMapImpl) beFac.getBean( &quot;StringMap&quot; );<\/p>\n<p>cacheBean.put( &quot;Key&quot;, &quot;Value&quot; );<\/p>\n<p>System.out.println( cacheBean.get(&quot;Key&quot;) );<\/p>\n<p>JOptionPane.showMessageDialog( null, &quot;End&quot; );<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Start the program. Do not forgett to start with -Dcom.sun.management.jmxremote. <br \/>Start JConsole and enjoy.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>First, write a class and annotate it: package com.javatutor.spring.jmx; import java.util.HashMap; import java.util.Map; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedResource; @ManagedResource( objectName = &quot;com.javatutor.spring.jmx:name=StringMap&quot; ) public class StringMapImpl { private Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); @ManagedAttribute public int getSize() { return map.size(); } @ManagedOperation public String get( String key ) { return map.get( key [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[3],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-spring"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}