我正在寻找一种方法来优雅地处理JBoss(Wildfly AS 8.2)的关闭。这将意味着所有当前请求都得到服务,Web应用程序停止接收进一步的请求。我发现这可以通过应用服务器的version 9
中的命令行来实现-
./jboss-cli.sh --controller=remoting://<host>:<port>
--connect --command=:shutdown(timeout=t)
使用此JBoss可以在t
秒内正常处理所有请求,并正常关闭(这需要从版本8升级到版本9)。
一种可能的方法是在Java
应用程序中处理此问题,方法是维护活动请求的计数,并等待此计数到达0
,直到超时,然后退出,基本上复制了上述功能。
我需要远程关闭webapp/JBoss,所以我们正在寻找一个基于JMX
(Java管理扩展)的解决方案。JBoss
是否可以通过JMX
或任何其他技术公开任何这样的操作来正常关闭?
PS-Ctrl-C
或kill
命令无法正常关闭JBoss
。
2条答案
按热度按时间jdzmm42g1#
JBoss EAP 6/7及更高版本允许通过CLI正常关机,甚至:
信号
SIGHUP
、SIGINT
和SIGTERM
都触发JBoss 7/6应用服务器的正常关闭,这些信号分别是命令kill -1 $PID、kill -2 $PID(或control+c)和kill $PID。https://access.redhat.com/solutions/18601
wgeznvg72#
您可以远程使用Jboss cli,就像您在控制器参数中传递的URL所显示的那样。您甚至可以使用“REST”API来执行它。应该可以从JMX中关闭。