野飞8终极版 - jconsole无法远程连接

6

大家好,

我正在尝试使用jconsole连接远程Wildfly 8 Final服务器。但是连接失败了。经过多次尝试和失败后,我试图至少将其连接到我的'localhost' jboss,但即使这样也不起作用。没有错误提示,它只是无法连接并显示“连接失败”。

详细信息:

  1. Wildfly 8 Final服务器
  2. 使用wildfly_installation/bin/jconsole.bat中的jconsole
  3. 已创建管理用户。尝试使用用户名/密码进行连接和不使用。
  4. standalone.xml是原始的,未更改的Wildfly 8 Final版本
  5. 我在jconsole中插入的URL以连接为:service:jmx:remoting-jmx://localhost:9999
  6. Wildfly/jboss中没有部署任何WARs/EARs。
  7. Java版本是1.7 release 51。写作时的最新版本。
  8. JAVA_HOME指向系统上唯一安装的java 1.7。
  9. jconsole可以连接本地java进程并正常工作,但无法进行远程连接。

基本上,这是一个全新安装的Wildfly 8 Final版本,已创建管理用户,但jconsole无法远程连接。

我还尝试了什么:我阅读了许多关于jconsole和Jboss AS 7.x出现问题的帖子。我尝试了这些线程的建议,但没有一个起作用。此外,Wildfly 8似乎具有不同的JMX版本(与Jboss 7.x中的1.1相比为1.3),因此我认为这就是为什么Jboss 7.x中的standalone.xml建议对Wildfly 8 Final不起作用的原因。

5个回答

8
Java Mission Control JMX控制台和Flight Recorder分析工具也适用于WildFly。
如前所述,正确的JMX连接字符串为:
service:jmx:http-remoting-jmx://{在此处插入服务器IP}:9990
它需要管理用户(详细信息请参见底部)。
至于Flight Recorder,这些应该添加到服务器运行时配置中的standalone.conf(.bat)中:
JAVA_OPTS=%JAVA_OPTS% -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true 在您想要运行Java Mission Control的工作站上,您需要在jdk的bin目录中调整jmc.ini中的类路径:
-Xbootclasspath/a:c:\Program Files\Java\jdk1.7.0_67\lib\jconsole.jar;c:\Program Files\Java\jdk1.7.0_67\lib\tools.jar;c:\wildfly-8.1.0.Final\bin\client\jboss-cli-client.jar`
先决条件(您很可能已经配置了此项):
这假定您已在工作站上安装了JDK:c:\Program Files\Java\jdk1.7.0_67\ 这假定您已在工作站上安装了WildFly:c:\wildfly-8.1.0.Final 在服务器上,您需要在standalone.xml中具有适当的bind.address配置(或):
<interfaces>
    <interface name="management">
        <any-address/>
    </interface>
    <interface name="public">
        <any-address/>
    </interface>
    <interface name="unsecure">
        <any-address/>
    </interface>
</interfaces> 
  1. 你需要在服务器上拥有一个管理用户,可以使用\bin\add-user.bat(.sh)来添加。

为了测试这个功能,请使用网络浏览器连接到http://{插入服务器IP地址}:9990,这将打开服务器的Web UI控制台。

祝好!


感谢您对此进行了端到端的解释。对于在客户端使用OSX的用户来说,jmc.ini位于/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/lib/missioncontrol/Java Mission Control.app/Contents/MacOS,您只需要在末尾添加-Xbootclasspath/a:/path/to/wildfly-8.2.0.Final/bin/client/jboss-cli-client.jar即可。 - Paaske
连接运行为域的Wildfly是否有任何区别?我可以使用jconsole连接到服务器,但我无法使用Java Mission Control连接。 - Adam6806

6

好的,我明白了。在Wildfly 8的最终版本中,本地管理端口(9999)已被删除。现在只有一个管理端口(9990),它将多个先前的端口复用到它上面,包括JMX。在Wildfly 8的发布候选版中仍然可用,因此所有在线指南和配置都会引起混淆。

因此,关键是要指定正确的协议,现在不是remoting-jmx,而是http-remoting-jmx。连接服务器的URL必须像这样:

service:jmx:http-remoting-jmx://<server_host_or_ip>:9990

(这是与以前的jboss/wildfly服务器中的service:jmx:remoting-jmx://:9999相对比的)

最后,无需烦恼修改standalone.xml配置。所有用于使其在Jboss 7.x上工作的配置调整都不适用于它。只要确保使用正确的协议和端口号,一切都可以开箱即用。只需确保在ManagementRealm中创建jboss用户。


2

您需要将jboss-cli-client.jar包含在jconsole类路径中:

jconsole -J-Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$WILDFLY_HOME/bin/client/jboss-cli-client.jar

$JAVA_HOME替换为类似于/usr/lib/jvm/java-8-oracle/这样的内容,将$WILDFLY_HOME替换为/opt/wildfly/或您解压它的任何位置。

然后URL的格式如下:

service:jmx:remote+http://${host}:9990

同时使用add-user.sh配置的凭据填写用户名和密码。


2
这是WildFly中的一个错误,最近已经修复,并将成为8.0.1版本的一部分。
更多详细信息请参见jira

1
下面是如何启用旧的本地JMX接口,从WildFly 8默认配置中删除,与JMX工具向后兼容。当新的HTTP接口不可用时,例如与遗留工具(例如Bamboo的JBoss 7附加组件)集成时,需要这样做。在WildFly 10上测试过,应该也适用于WildFly 8和WildFly 9。由于插件不支持HTTP管理接口,为使其正常工作,我们需要启用原生JMX接口,该接口曾经在端口9999上运行。这可以通过在management-interfaces部分下添加native-interface元素来完成:
    <management-interfaces>
        <native-interface security-realm="ManagementRealm">
            <socket-binding native="management-native"/>
        </native-interface>
        <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
            <socket-binding http="management-http"/>
        </http-interface>
    </management-interfaces>

同时定义相应的套接字绑定

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-native" interface="management" 
                    port="${jboss.management.native.port:9999}"/>
    ...

如果在域模式下,要使用远程端点,则将use-management-endpoint设置为false。
    <subsystem xmlns="urn:jboss:domain:jmx:1.3">
        <expose-resolved-model/>
        <expose-expression-model/>
        <remoting-connector use-management-endpoint="false"/>
    </subsystem>

希望可以帮助任何人...
参考:

https://docs.jboss.org/author/display/WFLY8/Admin+Guide#AdminGuide-NativeManagementEndpoint


谢谢!在这种情况下,我们应该在JConsole中使用什么URL? - sm4rk0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接