JBOSS弹出X11窗口导致关闭当前shell时应用宕机

    近期公司有个应用系统经常出现莫名其妙挂掉,查看日志报错为 X connection to localhost:10.0 host broken (explicit kill or server shutdown ),尝试重新启动应用服务器,过了不久发现使用的xshell工具弹出了X11提示,这时关闭当前xshell工作页,应用也立刻宕机。 检查了应用启动脚本,发现是nohup模式下运行的,看来是这个X11惹的祸,这究竟是什么呢? 经过仔细研究解决了这一问题,分享给大家。

应用系统之所以会在客户机弹出窗口,是因为应用程序代码可以绘制报表和图片,客户机在启动了XmanagerBroadcast之后,会在客户机端弹出窗口

出现的问题:当服务器中程序触发x窗口时,会在连接服务器的PC机本地xshell中生成一个x11窗口,这就出现了问题,这个xshell会话不能关闭了,此台PC机也不能重启,否则就会影响远程服务器应用就会停止,并且让人头痛的是不止一台PC机(IP不同的机器)会连接这台服务器对应用进行启动和停止,有的由于没启动XmanagerBroadcast,所以就无法弹出窗口,导致应用停止

 

解决方法:不使用实际的应用程序如XmanagerBroadcast来处理弹出的窗口,而使用JVM在服务器端来虚拟出这些功能

画图的库要使用 Java AWT,所以需要确保 JVM 运行在 headless 模式。

1.  java.awt.headless概念
Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

2.  何时使用headless mode
Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

3.  如何使用和Headless mode
一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来:

4.  设置方式:
JVM已经设置好了Headless mode的参数,在启动应用时加上 –D参数,-Djava.awt.headless=true ,或者在JBOSSrun.conf 中插入JAVA_OPTS="-Djava.awt.headless=true",这样在初始化JVM时就会默认选择系统配置模式为Headless mode


效果测试:

测试应用环境:呼叫中心报表管理系统

测试目的:由于此应用的查询报表功能一定会弹出窗口(已经反复测试),通过加入-Djava.awt.headless=true参数和不加验证查询报表时是否会在客户机弹出窗口,解决由于服务器端无法显示表格或图片而是通过客户机xmanager显示的问题。

测试过程:

1、启动应用(初始化JVM未加入-Djava.awt.headless=true),打开页面查询报表


2、点击查询后看到shell后台出现x11窗口

3、尝试关闭shell会话时,应用异常宕掉,并报错

4、在启动脚本配置文件run.conf中加入-Djava.awt.headless=true


5、重新启动应用后查询报表


6、  客户机后台未弹出窗口,关闭shell窗口应用也不会停止,到此为止,服务器端的生成报表和图片功能已经完全由JVM来处理,不需要通过客户机的XmanagerBroadcast来显示

  

结论:进行了Headless mode配置后,已经试运行1天,未出现过弹出窗口现象,并且报表功能访问正常,基本可以确定此方案的可行性,今天会把Headless mode加入到其他几个有类似现象的应用系统中,在下次应用重启后生效,继续观察运行情况


  如进行完Headless mode配置后启动应用出现java.awt.HeadlessException异常

使用另一个方法,在服务器端搭建虚拟图形界面工具

解决办法:1、服务器端运行 Xvfb   :0   -screen   0   1024x768x16   &

(如果提示已经运行Xwindows,可以用root用户再次执行此命令,其他用户启动的应用是可以访问root启动的虚拟窗口的)

2、将启动应用用户.bash_profile里添加DISPLAY=127.0.0.1:0.0

3、Source .bash_profile

4、启动应用即可

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29018063/viewspace-2059514/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29018063/viewspace-2059514/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值