2010-09-22 39 views
0
final RuntimeMXBean remoteRuntime = 
       ManagementFactory.newPlatformMXBeanProxy(
         serverConnection, 
        ManagementFactory.RUNTIME_MXBEAN_NAME, 
        RuntimeMXBean.class); 

其中serverConnection基本上連接到jmx服務器。java.lang:type = Runtime不是接口java.lang.management.RuntimeMXBean的實例

基本上正在進行的是,這段代碼工作正常。讓我解釋一下:

這段代碼的第一個調用調用服務器A,然後我抓取一些數據並將其存儲到一個xml文件中。使用這些信息,啓動一個新的服務器B.然後,想驗證B,我想刮B來比較元數據。但是,當我運行它,我得到的異常

 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 

)

但是,不知道這裏有什麼變化,因爲那些給我的問題的參數由ManagementFactory類我沒有控制管理。

回答

0

問題出在我自己的MBeanServer實現上。

如果傳入的objectName返回一個空對象,我已經爲isInstanceOf()方法返回false。事實證明,這發生在所有運行時類,所以在讀取類加載器部分下的http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html後,我去了一個事實,即我的ClassLoaderImplementation是不正確的,並加載了這些錯誤。

解決方法只是在這些RunTime類的isInstanceOf()中返回true。