2012-01-25 33 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);