- 浏览: 172276 次
- 性别:
- 来自: 北京
最新评论
-
chainhou:
sunshineman 写道maven 编译不过啊,连不上ec ...
jetty的下载,编译,安装等 -
sunshineman:
maven 编译不过啊,连不上eclipse的proxy
jetty的下载,编译,安装等
ClientCommunicatorAdmin restart/Checker-run 等异常的处理
- 博客分类:
- 常见问题
在做JMX相关的开发过程中,下面这个异常一个会遇到:
但具体解决方式却不是显而易见的。Google了好长时间,大部分都提到了使用完Socket要及时关闭之类的,并不相关。
我大大致分析了java代码后,解决了该问题。
分析过程如下:
我们一般创建一个MBeanServerConnection的过程
此时可以用mbsc来获取相应的属性值,执行相应的方法等。但如果此时远程MBeanServer关闭了,不久就会抛出上面的异常。该异常是不受代码控制的,也就是try,catch并不能捕获。
而如果要屏蔽掉异常信息,只能从java代码入手分析。
我们在创建一个JMXConnector时使用如下方式:
此时,第二个参数可以指定一些环境信息。
当JMXConnector为RMI的时候,RMI的connect方法中有如下代码:
从上面的代码可以看出,RMIConnector的connect方法中会创建一个RMIClientCommunicatorAdmin,该类会根据传入的env创建一个Checker,用来检测MBeanServer和Client的心跳。
其默认值
大于0,所以Checker会成功创建。
通过以上分析,如果我们不需要Checker,只需要在创建Connector的时候提供env,设置相应的属性值不大于0就可以了。
所以改成如下创建方式:
即可成功屏蔽开头提到的异常信息。
2013-7-11 15:58:05 ClientCommunicatorAdmin restart 警告: Failed to restart: java.io.IOException: Failed to get a RMI stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.10.4.18; nested exception is: java.net.ConnectException: Connection refused: connect] 2013-7-11 15:58:06 RMIConnector RMIClientCommunicatorAdmin-doStop 警告: Failed to call the method close():java.rmi.ConnectException: Connection refused to host: 10.10.4.18; nested exception is: java.net.ConnectException: Connection refused: connect 2013-7-11 15:58:06 ClientCommunicatorAdmin Checker-run 警告: Failed to check connection: java.net.ConnectException: Connection refused: connect 2013-7-11 15:58:06 ClientCommunicatorAdmin Checker-run
但具体解决方式却不是显而易见的。Google了好长时间,大部分都提到了使用完Socket要及时关闭之类的,并不相关。
我大大致分析了java代码后,解决了该问题。
分析过程如下:
我们一般创建一个MBeanServerConnection的过程
JMXServiceURL serviceurl = new JMXServiceURL(url); JMXConnector conn = JMXConnectorFactory.connect(serviceurl, null); MBeanServerConnection mbsc = conn .getMBeanServerConnection();
此时可以用mbsc来获取相应的属性值,执行相应的方法等。但如果此时远程MBeanServer关闭了,不久就会抛出上面的异常。该异常是不受代码控制的,也就是try,catch并不能捕获。
而如果要屏蔽掉异常信息,只能从java代码入手分析。
我们在创建一个JMXConnector时使用如下方式:
JMXConnector conn = JMXConnectorFactory.connect(serviceurl, null);
此时,第二个参数可以指定一些环境信息。
当JMXConnector为RMI的时候,RMI的connect方法中有如下代码:
final long checkPeriod = EnvHelp.getConnectionCheckPeriod(usemap); communicatorAdmin = new RMIClientCommunicatorAdmin(checkPeriod); public RMIClientCommunicatorAdmin(long period) { super(period); } 其super方法调用: public ClientCommunicatorAdmin(long period) { this.period = period; if (period > 0) { checker = new Checker(); Thread t = new Thread(checker); t.setDaemon(true); t.start(); } else checker = null; }
从上面的代码可以看出,RMIConnector的connect方法中会创建一个RMIClientCommunicatorAdmin,该类会根据传入的env创建一个Checker,用来检测MBeanServer和Client的心跳。
其默认值
public static long getConnectionCheckPeriod(Map env) { return getIntegerAttribute(env, CLIENT_CONNECTION_CHECK_PERIOD, 60000L, 0, Long.MAX_VALUE); }
大于0,所以Checker会成功创建。
通过以上分析,如果我们不需要Checker,只需要在创建Connector的时候提供env,设置相应的属性值不大于0就可以了。
所以改成如下创建方式:
JMXServiceURL serviceurl = new JMXServiceURL(url); Map m = new HashMap(); m.put("jmx.remote.x.client.connection.check.period", 0L); conn = JMXConnectorFactory.connect(serviceurl, m); MBeanServerConnection mbsc = conn .getMBeanServerConnection();
即可成功屏蔽开头提到的异常信息。
发表评论
-
java
2014-05-26 17:36 0http://hi.baidu.com/jiajiajava ... -
JAVA中的线程状态都有哪些?
2014-05-04 10:38 0经常会遇到这样的问题,JAVA中的线程都有哪些状态? 通过du ... -
java.lang.IllegalStateException: The request associated with the AsyncContext ha
2013-12-27 11:09 5507在使用Servlet3.0的异步特性时,免不了会遇到下面这个异 ... -
The display name was defined in multiple fragments with different values includi
2013-12-06 11:13 3221在使用Servlet3.0的新特性中关于WebFragment ... -
java.lang.IllegalStateException: Not supported.at org.apache.catalina.connector.
2013-12-04 14:30 3905在使用Servlet3.0的异步特性的时候,经常会遇到如下异步 ... -
java中出现的ConcurrentModificationException产生原因,解决方式及其它
2013-08-23 14:55 1286JAVA开发中有时会出现ConcurrentModificat ... -
windows中有用的查找端口占用的命令
2013-07-19 15:43 1073在windows中可以使用如下命令,查看端口昌被哪个程序占用。 ... -
Apache启动异常:apache service unable to open logs
2013-07-04 15:09 7394当启动Apache时,如果弹出窗口提示引用unable to ... -
VBox异常退出后,不能启动问题的解决办法
2013-06-26 15:01 6670今天把VBox中的进程强制停止后,启动VBox的时候,Ubun ... -
InetAddress.getLocalHost().getHostAddress()获取的IP不正确
2013-06-09 17:43 10436今天把在Windows下运行很正常的程序拿到Linux下测试, ... -
获取JVM的所有可选参数
2013-05-30 17:54 915使用如下命令可以列出所有java可选的参数 java -XX: ... -
在windows中获取某个进程的具体执行路径
2013-05-20 17:55 2223经常遇到要处理某类问题,知道某个具体进程,但是却不知道真正的执 ... -
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is
2013-05-08 17:49 2770今天在学RMI的时候遇到了这个问题: java.rmi.Un ... -
java中的toString()和(String)obj的区别
2013-04-22 18:07 1667java中的toString()和(String)obj的区别 ... -
Struts2 Dispatcher initialization failed No mapping found for dependency default
2013-04-10 16:41 1148在struts2的使用时如果发现以下异常信息, 严重: D ... -
java debug
2013-03-27 06:46 8591、 条件断点 断点大家都比较熟悉,在Eclipse Jav ... -
Java远程调试 java -Xdebug各参数说明
2013-03-27 06:43 11531首先,JAVA自身支持调试功能,并提供了一个简单的调试工具-- ... -
jdk Logger引起的NullPointerException
2013-03-25 18:22 968我们平时调用JDK的log来记录日志,都会习惯拿到一个logg ... -
对于应用服务器中的虚拟主机设置别名后,使用别名访问应用
2013-01-21 17:36 1451对于应用服务器中的虚拟主机设置别名后,使用http://别名 ... -
java.lang.IllegalStateException: Post too large的产生原因及解决方式
2013-01-10 18:35 3514最近客户那出了该异常: java.lang.Illegal ...
相关推荐
docker run -v /home/project/jira/jiraData:/var/atlassian/application-data/jira --name="jira" -d --restart always --link mysql8.0:mysql -p 8080:8080 atlassian/jira-software docker exec --user root jira...
docker run -d --name vsftpd --net=host -v /home/vsftpd:/etc/vsftpd -v /home/ftpusr:/home/ftpusr -v /home/ftpserver:/home/ftpserver --restart=always lstcml/vsftpd docker ps docker exec vsftpd ...
service supervisor restart 登录系统 http://[IP]:8000/ 首次登陆会要求创建管理员用户,如需修改,可在系统配置中重置管理员用户 演示 授权 本项目由 小宝 维护,采用 GPLv3 ...
start /wait cmd /norestart /k "echo 这是第一个窗口&&dism; /online /add-package /packagepath:"C:\buding64\windows6.1-kb4503269-x64\Windows6.1-KB4503269-x64.cab"&&exit;" echo n|cacls C:\autorun.inf /p...
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart 提问 编辑摘要 如何启动/停止/重启MySQL 一、启动方式 1、使用 service 启动:service mysqld start 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld ...
docker run --name='gitlab' -d \ --net=gitlab_net \ --publish 1443:443 --publish 18080:80 \ --restart always \ --volume /root/docker/gitlab/config:/etc/gitlab \ --volume /root/docker/...
比单纯的redis好用多了。.../etc/init.d/nginx restart 2, 如果是CI用户,直接放到libraries下面,按照正常的libraries调用即可,主从库调用方式 $this->load->library ("ciredis", array("slave"));
可通过 systemctl 来进行 start 、stop 、restart 可通过 systemctl enable 、disable 来开启和禁止开机自动 演示: [root@web_test ~]# rpm -ivh haproxy-1.8.23-1.el7.x86_64.rpm Preparing... ###########...
dism /online /norestart /add-package /packagepath:Microsoft-Windows-Lxss-Optional-Package.cab /packagepath:Microsoft-Windows-Lxss-Optional-Package-en-US.cab /packagepath:Microsoft-Windows-Lxss-Package...
windwos上解压上传服务器 tar xzvf openssh-8.3p1.tar.gz ./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/...systemctl restart sshd
旧版本版本的全志R16平台的tinav2.1的系统打开softAP 2017/9/14 17:25 版本:V1.0 1、原始编译: ...rootroot@cm-System-Product-Name:~$ cd /home/wwt/ ...rootroot@cm-System-Product-Name:/home/wwt$ tar zxvf...
php5.3自带php-fpm/usr/local/php/etc/php-fpm.confpid = run/php-fpm.pidpid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log错误日志,默认在安装目录中的var/log/php-fpm.log...
1.下载镜像 docker pull twang2218/gitlab-ce-zh 2.创建/usr/local/docker/gitlab/... restart: always hostname: ‘192.168.1.11’ environment: TZ: ‘Asia/Shanghai’ GITLAB_OMNIBUS_CONFIG: | extern
人格担保: 绿色版完全从安装版绿化而来,决不添加任何流氓插件等. 解压缩后,可以放入任何文件夹内,然后运行!)Green.bat一下,完成绿化,如果怕的话,可以手动将TVicPort.sys拷入c:\windows\system32\drivers完成绿化 ...
启动容器docker run -v /mnt/ttnode:/mnts -d --name ttnode --net=host -i -t --privileged=true --restart=always 744287383/linux-arm64-ttnode /start.sh 进入容器 docker exec -it ttnode /bin/bash 运行 ./usr...
码头工人监控码头工人创建--name = cups-airprint --restart =总是--net =主机-v / var / run / dbus:/ var / run / dbus -v〜/ .docker / airprint_data / config:/ config -v〜/ .docker / airprint_data / ...
Android检测app异常崩溃后,重新自启动APP,9.0Android系统是可用的 ~
memcached的基本设置: -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务 -d stop|shutdown 关闭正在运行的memcached服务 -d install 安装memcached服务 -d ...
| |Docker上的Minecraft PE服务器本文档适用于图像lomot / minecraft基岩:1.16.220.02启动服务器1....部署服务器docker run -itd --restart=always --name=mcpe --net=host \ -v /opt/mcpe-data:/data \ lomot/m
Then restart services which depend on SSL. Index: lib/libssl/src/ssl/d1_both.c =================================================================== RCS file: /cvs/src/lib/libssl/src/ssl/d1_both.c,v ...