wrapper在java应用中的bug

本文介绍了Java Service Wrapper的基本概念及其在项目中的应用。该工具能够将Java应用安装为Windows服务或Unix守护进程,并提供了日志记录、配置灵活性等功能。文章特别讨论了在启动Java虚拟机时可能出现的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先介绍下wrapper是个什么东西,下面的简单解释是直接Google出来的:

Java Service Wrapper可以把Java应用程序安装成一个Windows NT服务或Unix Daemon.它同时还为应用程序提供日记功能,灵活的配置,可靠的运行性能,按需求重新启动,简化应用程序的安装等

去年的java项目用了这个东西,在入口类使用接口WrapperListener,继承了WrapperListenerstart(),stop(),在项目外层指定入口类,wrapper会通过start()启动虚拟机,这里有些东西要弄清楚。

通过wrapper启动服务的时候,一共是启动了两个进程,一个wrapper服务,一个java虚拟机服务。

wrapper通过轮询的方式询问java虚拟机,以保证服务正常。问题就出在这里,java虚拟机做GC的时候,所有的线程会被挂起,包括响应轮询的线程。在默认的配置里面没有设置轮询超时时间的项,默认是3s。如果3sgc还没完毕则会使得轮询超时,wrapper会认为服务不正常,自动调用stop();start();重启java虚拟机服务。

这个问题必须显式的配置wrapper.ping.timeout和wrapper.ping.interval,一个是超时时间,一个是轮询间隔时间。相关的内容可以在官网看到

http://wrapper.tanukisoftware.com/doc/english/prop-ping-timeout.html 

http://wrapper.tanukisoftware.com/doc/english/prop-ping-interval.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值