My favorites
▼
|
Sign in
xebia-france
Xebia France libraries and workshops
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
aop
/
aspect-exposed-by-jmx
/
src
/
main
/
java
/
fr
/
xebia
/
aop
/
Management.aj
r2928
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package fr.xebia.aop;
import java.util.Hashtable;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import org.springframework.jmx.export.MBeanExporter;
import org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler;
import org.springframework.jmx.export.naming.ObjectNamingStrategy;
import org.springframework.jmx.support.MBeanServerFactoryBean;
import org.springframework.jmx.support.ObjectNameManager;
import org.springframework.util.ClassUtils;
/**
* This Aspect exposes all the classes implementing ManagedBean as JMX MBean
* @author Benoit Moussaud
*
*/
public aspect Management {
public interface ManagedBean {
public boolean isEnabled();
public void setEnabled(boolean enabled);
}
private pointcut managedBeanConstruction(ManagedBean bean) :
execution(ManagedBean+.new(..)) && this(bean);
after(ManagedBean bean) returning: managedBeanConstruction(bean) {
ObjectName registered = getMBeanExporter()
.registerManagedResource(bean);
System.out.println("Bean " + bean
+ " is exposed with this object name " + registered);
}
declare parents: PerfMonitor implements ManagedBean;
private MBeanExporter getMBeanExporter() {
//Spring Framework Stuff...
MBeanServerFactoryBean server = new MBeanServerFactoryBean();
server.setLocateExistingServerIfPossible(true);
server.afterPropertiesSet();
InterfaceBasedMBeanInfoAssembler assembler = new InterfaceBasedMBeanInfoAssembler();
assembler.setManagedInterfaces(new Class[] { ManagedBean.class });
MBeanExporter exporter = new MBeanExporter();
exporter.setNamingStrategy(new ObjectNamingStrategy() {
@SuppressWarnings("unchecked")
public ObjectName getObjectName(Object managedBean, String beanKey)
throws MalformedObjectNameException {
Hashtable keys = new Hashtable();
String shortName = ClassUtils.getShortName(managedBean
.getClass());
keys.put("Name", shortName);
keys.put("Type", "Monitor");
return ObjectNameManager.getInstance("xebia", keys);
}
});
exporter.setServer((MBeanServer) server.getObject());
exporter.setAutodetectMode(MBeanExporter.AUTODETECT_NONE);
exporter.setEnsureUniqueRuntimeObjectNames(false);
exporter.setAssembler(assembler);
exporter.afterPropertiesSet();
return exporter;
}
}
Show details
Hide details
Change log
r61
by bmoussaud on Mar 13, 2008
Diff
Initial Import of aop aspect-exposed-by- jmx project to SVN
Go to:
/trunk/aop
/trunk/aop/aspect-exposed-by-jmx
...aspect-exposed-by-jmx/.classpath
...p/aspect-exposed-by-jmx/.project
.../aspect-exposed-by-jmx/.settings
...tings/org.eclipse.jdt.core.prefs
...op/aspect-exposed-by-jmx/pom.xml
...nk/aop/aspect-exposed-by-jmx/src
...p/aspect-exposed-by-jmx/src/main
...ect-exposed-by-jmx/src/main/java
...-exposed-by-jmx/src/main/java/fr
...ed-by-jmx/src/main/java/fr/xebia
...y-jmx/src/main/java/fr/xebia/aop
.../java/fr/xebia/aop/Management.aj
...java/fr/xebia/aop/PerfMonitor.aj
...-jmx/src/main/java/fr/xebia/appz
...r/xebia/appz/ClassToMonitor.java
Sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 2449 bytes, 74 lines
View raw file
Powered by
Google Project Hosting