我需要使用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中,这个例子有效
答案 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文件,然后运行该程序,它可以工作!
我希望这对你有用!