在Windows上通过JSR160RMI监视IBM Websphere 8.x JMX失败

我有一个运行Websphere 8.5的AIX服务器

在Web UI的pipe理服务下,我configuration了所有要启用的JMX连接器。 目前没有SSL或authentication,因为它只用于testing。

我也有一个运行Ubuntu 16.04和Oracle Java 8的远程Linux机器。我已经将所有运行时jar从“/ usr / IBM / WebSphere / AppServer / runtimes”复制到该机器上的一个文件夹。

复制jar文件后,我创build了一个脚本来启动jconsole并通过JMX进行连接:

#!/bin/bash CLASSPATH=$JAVA_HOME/lib/jconsole.jar CLASSPATH=$CLASSPATH:/home/user/runtimes/com.ibm.ws.admin.client_8.5.0.jar CLASSPATH=$CLASSPATH:/home/user/runtimes/com.ibm.ws.ejb.thinclient_8.5.0.jar CLASSPATH=$CLASSPATH:/home/user/runtimes/com.ibm.ws.orb_8.5.0.jar $JAVA_HOME/bin/jconsole \ -J-Djava.class.path=$CLASSPATH\ service:jmx:iiop://172.29.154.22:9100/jndi/JMXConnector 

在启动这个脚本时,它告诉我安全连接失败,是否要不安全地重试。 如果我确认这个不安全的连接,它会重试并取消。 在此之后,它暴露了所有的Websphere的自定义Mbeans。

jconsole输出窗口如下所示:

 Aug 30, 2017 10:23:25 AM com.ibm.ws.security.config.ConfigURLProperties SEVERE: JSAS1480I: Security is not enabled because the ConfigURL property file is not set. Aug 30, 2017 10:23:26 AM com.ibm.ws.security.config.SecurityObjectLocator INFO: CWSCF0002I: The client code is attempting to load the security configuration the server and this operation is not allowed. 

现在我需要在一个/任何Windows计算机上执行相同的操作。 我目前的windows机器运行的是windows 10和oracle java jdk1.8.0_112。

所以我复制了运行时并移植了jconsole脚本。 以下批处理脚本包含启动jconsole的命令:

 "C:\Program Files\Java\jdk1.8.0_112\bin\jconsole.exe" -J"-Djava.class.path=C:\Program Files\Java\jdk1.8.0_112\lib\jconsole.jar;C:\Users\user\Desktop\jconsole\runtimes\com.ibm.ws.admin.client_8.5.0.jar;C:\Users\user\Desktop\jconsole\runtimes\com.ibm.ws.ejb.thinclient_8.5.0.jar;C:\Users\user\Desktop\jconsole\runtimes\com.ibm.ws.orb_8.5.0.jar" service:jmx:iiop://172.29.154.22:9100/jndi/JMXConnector 

运行这个脚本(作为pipe理员或作为普通用户,没有区别),它会尝试连接安全和失败。 jconsole输出将显示如下:

 Aug 30, 2017 10:33:00 AM com.ibm.ws.security.config.ConfigURLProperties SCHWERWIEGEND: JSAS1480I: Die Sicherheit ist nicht aktiviert, weil die ConfigURL-Eigenschaftendatei nicht definiert ist. Aug 30, 2017 10:33:00 AM com.ibm.ws.security.config.SecurityObjectLocator INFORMATION: CWSCF0002I: Der Clientcode versucht die Sicherheitskonfiguration des Servers zu laden. Diese Operation ist nicht zulässig. Aug 30, 2017 10:33:08 AM com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init> WARNUNG: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: cli-l-01.intranet.local; port: 2809" org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2200) at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2221) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:223) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:236) at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:119) at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:187) at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:137) at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:229) at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:130) at com.ibm.WsnBootstrap.WsnNameServiceHelper.narrow(WsnNameServiceHelper.java:65) at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1507) at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:1041) at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:963) at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:615) at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:128) at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:765) at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:164) at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:179) at javax.naming.InitialContext.lookup(InitialContext.java:417) at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1955) at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1922) at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287) at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270) at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:357) at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313) at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:294) Caused by: java.net.SocketException: Permission denied: connect at sun.nio.ch.Net.connect0(Native Method) at sun.nio.ch.Net.connect(Net.java:454) at sun.nio.ch.Net.connect(Net.java:446) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) at java.nio.channels.SocketChannel.open(SocketChannel.java:189) at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:95) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:207) ... 23 more 

然后,我可以select重新尝试连接不安全,这也将失败,以下附加输出到jconsole输出窗口:

 Aug 30, 2017 10:34:01 AM com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init> WARNUNG: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: cli-l-01.intranet.local; port: 2809" org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2200) at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2221) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:223) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:236) at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:119) at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:187) at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:137) at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:229) at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:130) at com.ibm.WsnBootstrap.WsnNameServiceHelper.narrow(WsnNameServiceHelper.java:65) at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1507) at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:1041) at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:963) at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:615) at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:128) at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:765) at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:164) at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:179) at javax.naming.InitialContext.lookup(InitialContext.java:417) at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1955) at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1922) at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287) at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270) at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:357) at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313) at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:294) Caused by: java.net.SocketException: Permission denied: connect at sun.nio.ch.Net.connect0(Native Method) at sun.nio.ch.Net.connect(Net.java:454) at sun.nio.ch.Net.connect(Net.java:446) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) at java.nio.channels.SocketChannel.open(SocketChannel.java:189) at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:95) at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:207) ... 23 more 

“cli-l-01.intranet.local”是本地windows计算机的主机名,并指向127.0.0.1 – 为什么要这样做? 它应该连接到服务器,而不是本地机器。 服务器的端口2809在Websphere中的端口名称“BOOTSTRAP_ADDRESS”下打开

我也尝试过使用其他版本的Java,例如IBM Java JRE,以及32和64位版本。 此外,我已经尝试了不同的计算机也运行Windows Server 2012。

这里怎么了? 它在Linux上完美的工作,但我不能让连接在Windows上工作。