Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将JVisualVM连接到远程Wildfly实例?_Java_Wildfly_Visualvm_Jvisualvm - Fatal编程技术网

Java 是否将JVisualVM连接到远程Wildfly实例?

Java 是否将JVisualVM连接到远程Wildfly实例?,java,wildfly,visualvm,jvisualvm,Java,Wildfly,Visualvm,Jvisualvm,我正在尝试将本地机器上运行的JVisualVM连接到运行WildFly服务器(具体来说是8.1.0版)的远程机器 我自己没有配置WildFly服务器,也不知道是谁配置的,但我知道我可以通过将浏览器指向以下位置作为管理用户从本地计算机登录: https://[ip address of the remote machine]:9443/console 请注意,它是https,而不是普通的http,并且它的端口已设置为9443(我认为默认值是8080或9990或其他什么…IDK,我在网上看到了很多

我正在尝试将本地机器上运行的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
它发射得很好<代码>文件>添加远程主机:然后我输入了IP<代码>正常。我在树中的Remote下右键单击它,并选择了添加JMX连接。我进去了

service:jmx:http-remoting-jmx://[ip]:9999
我检查了一下是否要使用安全凭据,并输入了用户名和密码。已选中以保存安全凭据。左键“不需要SSL连接”未选中。点击
OK
。它立即吐出了信息

无法连接到
admin@service:jmx:http-remoting-jmx://[ip]:9999
使用
服务:jmx:http-remoting-jmx://[ip]:9999

我还尝试了端口9443、9990和8080。这些都不起作用。我尝试在协议名称中使用https而不是http。那也没用

我错过了什么?为什么我可以访问控制台,并连接jboss-client.sh,但我不能使用JVisualVM?有什么日志我可以用在什么地方看看有什么问题吗?也许有人能指出我遗漏的配置


不确定这是否重要,但我的本地计算机正在运行安装了JDK8的Windows 10。WildFly服务器正在CentOS 6.3上使用Java 6。

您需要将
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

然后我使用了
服务:jmx:remote+http://[ip]:[port]
,并且能够连接。

您错过了在远程主机中运行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
然后,您可以使用正确的设置连接到服务器。

将jboss-cli-client.jar和jboss-client.jar包含在\lib\visualvm\platform\lib下,然后重新启动jvisualvm以拾取新的jar。

我不知道其他人是否(仍然)也有同样的问题(远程机器上的Wildfly10,管理控制台在9443和HTTPS上可用)

对于ssh连接:

  • 使用jboss-client.jar启动
    jvisualvm
  • 使用以下连接字符串:
  • 注意:我在这里使用了
    remote+https

  • 提供用户名和密码

  • 希望这能有所帮助。

    您是在运行WildFly还是JBoss EAP 6?WildFly 8+是一个Java EE 7容器,需要Java 7+。@JamesR.Perkins-服务器肯定在运行WildFly 8.1.0。我会检查Java版本,但我非常确定它是6..。@JamesR.Perkins-好的。结果是,服务器上同时安装了Java 6和Java 8。WildFly 8.1.0正在使用Java 8安装…我不确定服务器为什么还单独安装了Java 6。总之,希望澄清这一点对您有所帮助。:)管理端口正在侦听可访问的IP吗?例如,您可以使用CLI进行连接吗?FWIW端口9990是WildFly.@JamesR.Perkins的默认管理端口-是的,我可以将CLI从本地Windows计算机连接到端口9999上的远程服务器。此外,我可以在远程服务器上运行JVisualVM,并让它连接到自己的Wildfly实例。这对我来说已经足够好了。。。让它远程运行将是首选,但如果这是我能做的最好的。。。也许我能接受?哇,这太侮辱人了。我努力写下我所做的每一件事,并将其格式化,但你却懒得去读。很抱歉,这并不是故意的侮辱。我注意到在我们的命令中有一个区别,可能只是Windows和Linux的区别,但是您使用了
    -cp
    ,当我运行帮助时,它使用了
    -cp
    。它立即返回的事实似乎表明它找不到协议。至少这是我最好的猜测。好吧,我试着用
    -cp
    而不是
    -cp
    。没有区别。我尝试使用
    remote+http
    而不是
    httpremotingjmx
    。也没什么区别。我记不起来了,但是VisualVM会记录异常吗?我觉得马上回来似乎有点可疑。欢迎加入freenode IRC#wildfly或HipChat。FWIW
    httpremotingjmx
    应该可以正常工作
    remote+http
    只是其中的替代品。
    jvisualvm --cp:a @JBOSS_HOME/bin/client/jboss-client.jar
    
    service:jmx:remote+https://remote-server:9443