tags:

views:

25

answers:

1
final RuntimeMXBean remoteRuntime = 
                ManagementFactory.newPlatformMXBeanProxy(
                        serverConnection,
                    ManagementFactory.RUNTIME_MXBEAN_NAME,
                    RuntimeMXBean.class);

Where the serverConnection is just basically connecting to a jmx server.

What basically is going on is, this piece of code works fine. Let me explain:

The first call of this piece of code calls to server A, I then scrape some data in it and store it into an xml file. Using this information, start up a new server B.

Then, in wanting to verify B, I want to scrape B to compare the metadata. But when I run it I get the exception

    java.lang.IllegalArgumentException: java.lang:type=Runtime is not an instance of interface java.lang.management.RuntimeMXBean
        at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:617

)

But, not sure what changes here since the parameters that are giving me problems are managed by the ManagementFactory class I don't have control over.

A: 

The problem was with my own MBeanServer implementation.

I had it returning false for the isInstanceOf() method if the passed in objectName returned a null Object. It turns out that this happened at all RunTime Classes so after reading http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html under the Class Loader section, I went with the fact that my ClassLoaderImplementation was incorrect and was loading these incorrectly.

Work around was just to return true in isInstanceOf() for these RunTime classes.

Th3sandm4n