2012-01-25 66 views
1

我需要將java應用連接到MBean服務器,但我無法使JMXConnector正常工作。連接JMXConnector時獲取NoInitialContextException

我得到一個NoInitialContextException當我嘗試運行此:

try 
{ 
    if(user != null) 
    { 
     HashMap environment = new HashMap(); 
     environment.put(JMXConnector.CREDENTIALS, new String[] {user, password}); 
     connector = JMXConnectorFactory.connect(location, environment); 
    } 
    else 
    { 
     connector = JMXConnectorFactory.connect(location, null); 
    } 

    beanServer = connector.getMBeanServerConnection(); 
} 
catch(Exception e) 
{ 
    throw new ConnectException("Failed to connect to " + location + ": " + e.getMessage()); 
} 

它發生時,我使用一個用戶名和密碼,但我不能沒有一個測試,因爲測試服務器我必須進行身份驗證。

編輯:我正在使用java6 SE。沒有相關的罐子添加。

任何想法,我在做什麼錯在這裏?任何幫助深表感謝。

回答

0

您沒有指定嘗試連接的服務器,但這裏是weblogic的示例。我懷疑,你的JMXServiceURL不正確,它基於你試圖連接的Mbeanserver而改變。

+0

嗯...我不這麼認爲。該網址是給我的,它適用於JConsole。看看它的服務器確實是weblogic(它寫在url中)。 – elite5472

+0

看來你在環境中缺少javax.management.remote.JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,「weblogic.management.remote」。你嘗試過嗎? – kosa

0

正如thinksteep說,你可以嘗試:

Map<String, Object> env = new HashMap<String, Object>(); 
env.put(JMXConnectorServerFactory.PROTOCOL_PROVIDER_PACKAGES,    "com.sun.jmx.remote.protocol"); 

,以後你可以用連接:

jmxc = JMXConnectorFactory.connect(new JMXServiceURL(address), env);