我正在尝试将在我的本地计算机上运行的JVisualVM连接到运行WildFly服务器的远程计算机(版本8.1.0,具体而言。)
我自己没有配置WildFly服务器,我不知道是谁做的,但我知道我可以通过指向浏览器来从本地计算机以管理用户身份登录:
https://[ip address of the remote machine]:9443/console
请注意,它是 https ,而不是普通的http,并且该端口已设置为 9443 (我认为默认值为8080或9990或者某些内容.. IDK,我在网上看到了很多端口号。我已经明确告诉我,这个WildFly服务器禁用了http。)
我可以通过SSH连接到远程计算机。我可以导航到WildFly的bin
目录并运行jboss-client.sh
。我必须连接端口 9999 (我认为默认值为9990?)
我将jboss-client.jar
(在bin/client
下)复制到我的本地计算机并从命令行运行JVisualVM,如下所示:
.\jvisualvm.exe -cp:a C:\[path to]\jboss-client.jar
它推出很好。 File > Add Remote Host
:然后我进入了IP。 OK
。我在树中的Remote下右键单击它并选择了Add JMX Connection
。我进入了
service:jmx:http-remoting-jmx://[ip]:9999
我检查了我想使用安全凭据并输入了用户名和密码。已选中以保存安全凭据。左侧“不要求SSL连接”未选中。点击OK
。它立即吐出消息
无法使用
连接到admin@service:jmx:http-remoting-jmx://[ip]:9999
service:jmx:http-remoting-jmx://[ip]:9999
我也试过了端口9443,9990和8080。这些都没有奏效。我在协议名称中尝试了https而不是http。这也行不通。
我错过了什么?我怎么能访问控制台,并与jboss-client.sh连接,但我不能使用JVisualVM?是否有一些日志我可以在某个地方使用,看看有什么问题?也许有人可以指出我错过的配置?
不确定它是否重要,但我的本地计算机正在运行安装了JDK8的Windows 10。 WildFly服务器在CentOS 6.3上使用Java 6.
答案 0 :(得分:1)
您需要将jboss-client.jar
(或jboss-cli-client.jar
)添加到JVisualVM的类路径中。该库可以在WildFly安装的bin/client
目录中找到。
我使用以下命令将库添加到类路径。
jvisualvm --cp:a ~/servers/wildfly-10.0.0.Final/bin/client/jboss-client.jar
然后我使用了service:jmx:remote+http://[ip]:[port]
并且能够连接。
答案 1 :(得分:0)
你错过了在远程主机中运行jstatd命令, 这个小程序是RMI服务器,可以从客户端连接到远程主机,虽然你使用jmx连接它使用jmxrmi协议进行连接。
所以首先在远程主机中创建文件名为security.policy,其中包含:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
当然你必须在文件部分为linux放置显式路径然后创建这个文件把它放在jdk.home的bin目录中
然后你应该在远程主机上运行这个命令 $ JAVA_HOME / bin / jstatd -J-Djava.security.policy = /security.policy的路径-J-Djava.rmi.server.hostname =远程ip地址-J-Djava.net.preferIPv4Stack = true 那么你可以通过正确的设置连接到服务器。
答案 2 :(得分:0)
在\ lib \ visualvm \ platform \ lib下包含jboss-cli-client.jar和jboss-client.jar,然后重启jvisualvm以获取新的jar。
答案 3 :(得分:0)
我不知道其他人是否也仍然存在相同的问题(远程计算机上的Wildfly10,管理控制台在9443上提供HTTPS)。以下对我有用。
对于ssh连接:
jvisualvm
jvisualvm --cp:a @JBOSS_HOME/bin/client/jboss-client.jar
service:jmx:remote+https://remote-server:9443
注意:我在这里remote+https
希望这会有所帮助。