2013-05-09 64 views
0

最近,我在使用MongoDB 2.10.1和我的JavaEE應用程序在Jboss 4.2.3GA上運行時遇到了應用程序啓動時的問題。MongoDB JMX註冊異常:類不公開管理接口

AM com.mongodb.DBPortPool$Holder get 
WARNING: JMX registration error: com.mongodb.util.management.JMException: 
javax.management.NotCompliantMBeanException: Class does not expose a management 
Class does not expose a management interface: java.lang.Object 
Consider setting com.mongodb.MongoOptions.alwaysUseMBeans property to true. 
Continuing... 

我的應用程序處理使用無狀態會話Bean數據庫查詢,從我所看到的,是有MongoOptions設置alwaysUseMBeans爲的Java6或更高版本的用戶,運行在JBoss上一段時間。但是,在嘗試通過Java驅動程序將alwaysUseMBeans設置爲true時,沒有可用的setter。

有沒有其他人有類似的問題,或者是否有我失蹤的解決方案?

回答

0

他告訴你在異常本身的答案......我只是遇到了像你一樣的失敗。如果您在數據中某處使用數據類型「對象」,Java不會喜歡它 - >您始終需要使用Java中更具體的數據類型,而不是使用Object。

但我知道這個問題,我在同shizzle運行時更改地圖這樣

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

這個

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

後,我不得不改變它反對,因爲一些值是字符串,其他一些是整數,整數必須是整數(不是字符串) - >僅僅因爲它在語義上與字符串錯誤。僅將示例更改爲字符串對象構造的示例。更好的方法是創建一個

BasicDBObject().append("myField", aValueOfTheCorrectDatatype); 

並在正確的數據類型中追加您喜歡的值。

或者,你喜歡他告訴你在異常集MongoDB中驅動程序這個選項:

MongoClientOptions.Builder builder = new MongoClientOptions.Builder().alwaysUseMBeans(true); 
mongo = new MongoClient(configuration.getEpgMongoDbHost(), builder.build()); 

但是,是的......超級搞笑......我設置的選項和我仍然得到這個愚蠢的異常,哦,我喜歡這個!當記錄的東西只是在撒謊時,這總是非常棒! :D好吧,我會改變我的地圖成爲BasicDBObject總有一天,目前..我只是忽略這個例外,一切運作良好^^