- 浏览: 174920 次
- 性别:
- 来自: 北京
最新评论
-
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 5630在使用Servlet3.0的异步特性时,免不了会遇到下面这个异 ... -
The display name was defined in multiple fragments with different values includi
2013-12-06 11:13 3257在使用Servlet3.0的新特性中关于WebFragment ... -
java.lang.IllegalStateException: Not supported.at org.apache.catalina.connector.
2013-12-04 14:30 3952在使用Servlet3.0的异步特性的时候,经常会遇到如下异步 ... -
java中出现的ConcurrentModificationException产生原因,解决方式及其它
2013-08-23 14:55 1327JAVA开发中有时会出现ConcurrentModificat ... -
windows中有用的查找端口占用的命令
2013-07-19 15:43 1115在windows中可以使用如下命令,查看端口昌被哪个程序占用。 ... -
Apache启动异常:apache service unable to open logs
2013-07-04 15:09 7465当启动Apache时,如果弹出窗口提示引用unable to ... -
VBox异常退出后,不能启动问题的解决办法
2013-06-26 15:01 6730今天把VBox中的进程强制停止后,启动VBox的时候,Ubun ... -
InetAddress.getLocalHost().getHostAddress()获取的IP不正确
2013-06-09 17:43 10549今天把在Windows下运行很正常的程序拿到Linux下测试, ... -
获取JVM的所有可选参数
2013-05-30 17:54 959使用如下命令可以列出所有java可选的参数 java -XX: ... -
在windows中获取某个进程的具体执行路径
2013-05-20 17:55 2257经常遇到要处理某类问题,知道某个具体进程,但是却不知道真正的执 ... -
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is
2013-05-08 17:49 2886今天在学RMI的时候遇到了这个问题: java.rmi.Un ... -
java中的toString()和(String)obj的区别
2013-04-22 18:07 1706java中的toString()和(String)obj的区别 ... -
Struts2 Dispatcher initialization failed No mapping found for dependency default
2013-04-10 16:41 1187在struts2的使用时如果发现以下异常信息, 严重: D ... -
java debug
2013-03-27 06:46 8971、 条件断点 断点大家都比较熟悉,在Eclipse Jav ... -
Java远程调试 java -Xdebug各参数说明
2013-03-27 06:43 11604首先,JAVA自身支持调试功能,并提供了一个简单的调试工具-- ... -
jdk Logger引起的NullPointerException
2013-03-25 18:22 1010我们平时调用JDK的log来记录日志,都会习惯拿到一个logg ... -
对于应用服务器中的虚拟主机设置别名后,使用别名访问应用
2013-01-21 17:36 1482对于应用服务器中的虚拟主机设置别名后,使用http://别名 ... -
java.lang.IllegalStateException: Post too large的产生原因及解决方式
2013-01-10 18:35 3562最近客户那出了该异常: java.lang.Illegal ...
相关推荐
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...
具体错误信息未完全给出,但可以推断出是由于版本不匹配引发的异常。 #### 三、解决步骤详解 为了解决这一问题,我们需要按照以下步骤来操作: 1. **备份旧的Hive Jar包**: - 在三台服务器(39、40、41)上,先...
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...
在Ubuntu VPS上安装Docker时,可能会遇到一个常见的错误:“Cannot connect to the Docker daemon at unix:///var/run/docker.sock.” 这个问题通常是由于Docker守护进程未运行或者是由于Linux内核版本过低导致的。...
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 ...
/etc/init.d/sshd restart systemctl restart sshd ``` 最后,验证OpenSSH版本是否已成功升级到8.0,使用`ssh -V`命令查看: ```bash ssh -V ``` 整个升级流程至此结束。务必在升级前备份现有配置和相关文件,以...
service supervisor restart 登录系统 http://[IP]:8000/ 首次登陆会要求创建管理员用户,如需修改,可在系统配置中重置管理员用户 演示 授权 本项目由 小宝 维护,采用 GPLv3 ...
1. **错误处理** 当遇到类似 `ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)` 的错误时,可以通过以下两种方式解决: - 使用 `mysqladmin` 设置 root 用户密码并指定...
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 ``` 这里的`-H tcp://0.0.0.0:2375`参数意味着Docker守护进程将监听所有网络接口(0.0.0.0)的2375端口...
// 在这里处理异常,例如记录日志、发送崩溃报告等 Log.e("APP", "Uncaught Exception", ex); // 如果希望应用在崩溃后重启,可以在这里进行操作 restartApp(); } }); ``` `restartApp()` 方法是关键,它...
@ nuxtjs / stylelint-module Nuxt.js的Stylelint模块要求您需要确保已安装stylelint : yarn add --dev stylelint # or npm install --save-dev stylelint设置将@nuxtjs/stylelint-module依赖项添加到您的项目中...
docker run --name zerotier-moon -d --restart always -p 9993:9993/udp seedgou/zerotier-moon -4 1.2.3.4 用您的1.2.3.4 IP替换1.2.3.4 。 要显示您的月亮ID,请运行 docker logs zerotier-moon 注意:创建新...
相当于Windows系统中的restart命令。 命令语法: /sbin/reboot [-n] [-w] [-d] [-f] [-i] 或 reboot [-n] [-w] [-d] [-f] [-i] 命令参数: 参数 长参数 描叙 -d 重新启动时不把数据写入记录文件/...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
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... ###########...
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
go:latestdocker run -d --name maven-go \ -v $PWD/config.yaml:/root/config.yaml \ -v $PWD/data:/data \ --restart always \ -p 8880:8880 \ f763180872/maven-goconfig.yaml为启动配置,默认配置见配置文件说明...
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