今天同事在现场遇到这样一个问题,堆栈如下:

[2012-05-10 15:26:52,798] INFO  [main] util.RMIClientSocketFactory ClientSocketFactory.createSocket(10.154.2.23, 63828) -> 10.154.2.23
[2012-05-10 15:27:13,802] ERROR <root> Failed to obtain jmx connection to service:jmx:rmi:///jndi/rmi://10.154.2.23:8999/jmxrmi, cause: Connection refused to host: 10.154.2.23; nested exception is: 
java.net.ConnectException: Connection timed out: connect
[2012-05-10 15:27:13,803] ERROR [main] util.JmxUtil Failed to obtain jmx connection to service:jmx:rmi:///jndi/rmi://10.154.2.23:8999/jmxrmi, cause: Connection refused to host: 10.154.2.23; nested exception is: 
java.net.ConnectException: Connection timed out: connect
[2012-05-10 15:27:13,803] WARN  [main] tomcat.TomcatMonitor55 Connection refused to host: 10.154.2.23; nested exception is: 
java.net.ConnectException: Connection timed out: connect
java.rmi.ConnectException: Connection refused to host: 10.154.2.23; nested exception is: 
java.net.ConnectException: Connection timed out: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
at javax.management.remote.rmi.RMIConnector.getConnection(Unknown Source)
at javax.management.remote.rmi.RMIConnector.connect(Unknown Source)
at javax.management.remote.JMXConnectorFactory.connect(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
... 12 more

去除了公司的代码提示。

解决方案,必须参考tomcat官网和tomcat源码以及Sun的JMX指南,这类问题,Sun提出解决方案了,Tomcat实现了,并且在其官网上有,这是我发的邮件,就不加工了:

这个问题很清晰,因为你是用RMI连接的,JMXRMI一共开放两个端口,一个RMIRegistry端口,就是你界面配置的端口,另一个是RMI协议栈随机选择,这个端口如果不人工控制的话,操作

系统会随机选择的,你开启防火墙当然不行了,因为还有一个端口需要开放。

这个问题解决方案也很简单,必须人为选择端口,这个Tomcat文档上有,这个是从Tomcat官网上找到的:

JMX Remote Lifecycle Listener (org.apache.catalina.mbeans.JmxRemoteLifecycleListener)
This listener requires catalina-jmx-remote.jar to be placed in $CATALINA_HOME/lib. This jar may be found in the extras directory of the binary download area.

The JMX Remote Lifecycle Listener fixes the ports used by the JMX/RMI Server making things much simpler if you need to connect jconsole or a similar tool to a remote Tomcat instance that is running behind a firewall. Only these ports are configured via the listener. The remainder of the configuration is via the standard system properties for configuring JMX. If this listener was configured in server.xml as:

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

需要你根据现场的Tomcat版本手工下载一个 catalina-jmx-remote.jar 包,这个包里面就有这个Listener类,其中10002是你之前配置的8999,10001就是我们要新添加的端口,这个
必须也在防火墙里面配置。

上面的配置需要放在tomcat conf下的server.xml里面。

另外这个10002配置后,你的-Dcom.sun.management.jmxremote.port=8999 就不要添加了,去掉这句。

转载于:https://www.cnblogs.com/diyunpeng/archive/2012/05/10/2494951.html

Tomcat Firewall JMX RMI相关推荐

  1. Tomcat 打开jmx

    jmx 配置后可以通过windows java客户端自带的jconsole.exe配置登陆,直观的查看jvm的情况及系统的各项指标: 一.配置linux下tomcat的jmx 具体配置如下,如果生产环 ...

  2. java jmx 监控tomcat_通过Tomcat开启JMX监控的方法图解

    搭建模拟环境: 操作系统:centos7 内存:1G jdk:1.8.0_131 tomcat:8.0.48 环境准备我们这里就不直接演示了,直接配置tomcat的jmx 1.进入到tomcat的bi ...

  3. MX 连接器服务器通信错误: service:jmx:rmi

    转载:http://www.zydgbbs.com/thread-1649-1-1.html 这几天启动我们Java Web 项目,经常会出现: MX 连接器服务器通信错误: service:jmx: ...

  4. (Connection refused): service:jmx:rmi:///jndi/rmi://X.X.X.X:12345/jmxrmi

    zabbix监控Windows下Tomcat的相关问题及解决方案 问题描述: zabbix监控Tomcat时报(Connection refused): service:jmx:rmi:///jndi ...

  5. 使用JvisualVM无法连接linux远程服务器,错误无法使用service:jmx:rmi:// /jndi/rmi://ip:port/jmxrmi

    前言 在监控java进程,使用JvisualVM连接远程服务器时,正常输入服务器的IP+端口,本来以为可以正常连接的,结果却提示错误无法使用service:jmx:rmi:// /jndi/rmi:/ ...

  6. jmx rmi 穿越防火墙问题及jmxmp的替代方案

    2019独角兽企业重金招聘Python工程师标准>>> jmx rmi 穿越防火墙问题及jmxmp的替代方案 博客分类: java 前段时间遇到jmx使用rmi协议进行连接穿越防火墙 ...

  7. Java VisualVM添加远程JMX连接时提示“无法使用service:jmx:rmi:///jndi/rmi******连接到*****”

    在使用本地Java VisualVM连接测试服务器上的JVM时出现提示 无法使用service:jmx:rmi:///jndi/rmi://***.***.***.***:****连接到***.*** ...

  8. JMX学习笔记(四) JMX RMI

    连接器概念: JMX规范定义了连接器的概念(Connectors),连接器位于JMX的3层构架中的分布式服务层.连接器负责建立MBean服务器和管理应用之间的通信.连接器由一个驻留在代理层的连接器服务 ...

  9. 启动tomcat时jmx port被占用

    一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportExceptio ...

最新文章

  1. KD树和LSH局部敏感哈希
  2. python stm32-STM32 上面跑Python
  3. api key for Alpha Vantage
  4. C++Persistent segment tree持久段树的实现算法(附完整源码)
  5. Setup Factory打包时实现第三方DLL文件的注册
  6. Doclava:来自Google的自定义Javadoc Doclet
  7. undefined reference to `cv::VideoCapture::VideoCapture()'
  8. Hive静态分区表动态分区表
  9. 未能连接到许可证服务器 发生错误 -96,ug启动许可证错误怎么办 UG软件启动许可证错误96解决方法...
  10. 漫步ASP.NET MVC的处理管线
  11. 一款“灵动”的滑动按钮
  12. 46个不可不知的生活小常识
  13. 图片切换ajax,jQuery AJAX全屏图文幻灯切换
  14. OctaneRender渲染器的硬件要求是什么
  15. matplotlib之hist
  16. Linux中的数学运算
  17. 如何实现bat一键关机
  18. HDU - 2121 Ice_cream’s world II(朱刘算法+虚根)
  19. 今天开始做战斗,回合制战斗代码实现第一篇,从头开始,简单的2d回合制游戏
  20. 【Linux学习笔记】Linux命令压缩解压文件

热门文章

  1. python京东注册账号_Python爬虫模拟登录京东获取个人信息
  2. java生成小图片_JAVA生成缩略小图片类
  3. java jdbc连接derby,通过JDBC连接到Derby数据库失败
  4. 安卓手机反应越来越慢怎么办_安卓手机运行慢怎么办 只需几步轻松提升安卓手机速度...
  5. java简述会话对象的生命周期_简述Java Web三大作用域对象
  6. win8看不到win7局域网计算机名,实现Win7旗舰版与win8.1系统局域网里文件共享的设置方法【图】...
  7. 拉格朗日插值的优缺点_拉格朗日与牛顿插值法的比较
  8. jvm对于java的意义_谈谈对JVM的理解
  9. python程序调试logging_python-logging模块的简单使用
  10. 安卓获取imei权限闪退_Android10 下获取序列号和IMEI号的权限