使用groovy连接到websphere jmx时出现连接器错误

时间:2013-12-10 15:04:08

标签: groovy websphere jmx

我需要使用groovy连接到websphere jmx:host是输入参数

def urlRuntime = '/jndi/JMXConnector'
def urlBase = 'service:jmx:iiop://' + host

def serviceURL = new JMXServiceURL(urlBase + urlRuntime)
def h = new Hashtable()
h.put(Context.SECURITY_PRINCIPAL, username)
h.put(Context.SECURITY_CREDENTIALS, password)

h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "com.ibm.websphere.management.remote")

def server = JMXConnectorFactory.connect(serviceURL,h).MBeanServerConnection

println server

当我运行这个例子时,我得到了这个例子:

JSAS1480I: Security is not enabled because the ConfigURL property file is not set.
Caught: java.io.IOException: Connector not available: Error during resolve
java.io.IOException: Connector not available: Error during resolve
    at com.ibm.websphere.management.remote.WsProvider.newJMXConnector(WsProvider.java:155)
    at KonfiguraceSluzebConfig.main(rob-app-task.groovy:59)

我的代码出了什么问题?我使用的是websphere版本8.5.5.0

更新

我尝试添加配置文件:

   h.put("com.ibm.CORBA.ConfigURL","ssl.client.props");

但异常仍然相同。我不知道如何添加此文件

UPDATE2

所以经过一些研究后我发现我需要添加这个参数女巫groovy:

-Dcom.ibm.CORBA.ConfigURL=sas.client.props
-Dcom.ibm.SSL.ConfigURL=ssl.client.props

现在异常JSAS1480I已解决,但还有另一个例外:

Caused by: java.lang.ClassCastException: com.ibm.rmi.javax.rmi.PortableRemoteObject incompatible with javax.rmi.CORBA.PortableRemoteObjectDelegate

当我删除此属性时:

h.put(Context.SECURITY_PRINCIPAL, username)
h.put(Context.SECURITY_CREDENTIALS, password)

然后弹出窗口,显示用户名和密码。当我输入有效的用户名和密码时,我们有相同的例外:

java.io.IOException: Connector not available: Error during resolve
    at com.ibm.websphere.management.remote.WsProvider.newJMXConnector(WsProvider.java:155)

真的没告诉我问题出在哪里......很好的IBM

任何人都可以帮我解决这个问题吗?

PS:在java中,这个例子有效

1 个答案:

答案 0 :(得分:0)

当我将Websphere8.5连接到jmx时,我遇到的情况与您的情况相同。

我反编译com.ibm.ws.admin.client_8.5.0并调试了类com.ibm.websphere.management.remote.WsProvider的源代码。

当代码在第initialContext.lookup(jndiURL);行运行时,抛出了异常!然后我看了异常的细节,我发现异常的情况:

' Connector not available: Error during resolve' was 'WsnNameService properties [Root exception is org.omg.CORBA.TRANSIENT: initial and forwarded IOR inaccessible vmcid: IBM minor code: E07 completed: No] '

我继续挖掘异常IBM minor code: E07 completed: No的案例java.net.UnknownHostException

我发现我在localhost连接到远程jmx,并且目标的主机名不在我的hosts文件中。 我将10.24.16.xx remotehostname添加到hosts文件,然后运行该程序,它可以工作!

我希望这对你有用!