---
title: '@ManagedResource in Spring is really cool'
url: 'https://www.tutego.de/blog/javainsel/2006/03/managedresource-in-spring-is-really-cool'
markdown: 'https://www.tutego.de/blog/javainsel/2006/03/managedresource-in-spring-is-really-cool.md'
date: '2006-03-09'
description: '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.an…'
taxonomy:
  category:
    - Spring
---

# @ManagedResource in Spring is really cool

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## @ManagedResource in Spring is really cool

09.03.2006 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

First, write a class and annotate it:

```java
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 = "com.javatutor.spring.jmx:name=StringMap" )

public class StringMapImpl

{

private Map<String, String> map = new HashMap<String, String>();

@ManagedAttribute
```

public int `getSize()`

```java
{

return map.size();

}

@ManagedOperation
```

public `String` `get( String key )`

```java
{

return map.get( key );

}

@ManagedOperation
```

public `String` `put( String key, String value )`

```java
{

return map.put( key, value );

}

public void remove( String key )

{

map.remove( key );

}

}
```

Next, write a spring config file:

```
<?xml version="1.0" encoding="UTF-8"?>
```

<bean id="StringMap" class="com.javatutor.spring.jmx.StringMapImpl" />
```

<bean id="MBeanExporter"

```java
class="org.springframework.jmx.export.MBeanExporter">

<property name="assembler" ref="MBeanInfoAssembler" />

<property name="autodetect" value="true" />

<property name="namingStrategy" ref="NamingStrategy" />

</bean>
```

<bean id="AnnotationJmxAttributeSource"

class="`org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource`"

```
/>
```

<bean id="NamingStrategy"

```java
class="org.springframework.jmx.export.naming.MetadataNamingStrategy">

<property name="attributeSource" ref="AnnotationJmxAttributeSource" />

</bean>
```

<bean id="MBeanInfoAssembler"

```java
class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">

<property name="attributeSource" ref="AnnotationJmxAttributeSource" />

</bean>

</beans>
```

Now the client:

```java
package com.javatutor;

import javax.swing.JOptionPane;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.javatutor.spring.jmx.StringMapImpl;

public class SpringWithJmxExample

{
```

public static void main( `String`\[\] args )

```java
{

ApplicationContext beFac = new ClassPathXmlApplicationContext( "springJmx.xml"

);

StringMapImpl cacheBean = (StringMapImpl) beFac.getBean( "StringMap" );

cacheBean.put( "Key", "Value" );

System.out.println( cacheBean.get("Key") );

JOptionPane.showMessageDialog( null, "End" );

}

}
```

Start the program. Do not forgett to start with -Dcom.sun.management.jmxremote. Start JConsole and enjoy.

Kategorien: [Spring](https://www.tutego.de/blog/javainsel/category/spring/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)
