服务器环境上的Guava AbstractScheduledService
Guava AbstractScheduledService on server environment
当应用程序服务器关闭时,在服务器环境(例如 Tomcat)中关闭 AbstractScheduledService
运行 的首选方法是什么?我是否必须为此显式注册一个服务器侦听器,或者有没有办法将服务线程指定为守护进程?
管理 Service
的标准方法(服务器中的 including/particularly)是使用 ServiceManager
。将所有服务添加到 ServiceManager
,然后 startAsync()
启动时管理器和 stopAsync()
关闭时。为此,您需要一个服务器侦听器。
可以通过覆盖 AbstractScheduledService
的 executor()
方法并返回一个使用 ThreadFactory
生成守护线程的执行程序来将服务线程指定为守护进程,但请注意如果你这样做,执行器不会自动关闭 if/when AbstractScheduledService
本身会停止(尽管你可以向服务添加一个侦听器,就像默认的 executor()
实施)。
也就是说,我建议 ServiceManager
加上服务器侦听器。该方法应确保您的服务有序关闭。
当应用程序服务器关闭时,在服务器环境(例如 Tomcat)中关闭 AbstractScheduledService
运行 的首选方法是什么?我是否必须为此显式注册一个服务器侦听器,或者有没有办法将服务线程指定为守护进程?
管理 Service
的标准方法(服务器中的 including/particularly)是使用 ServiceManager
。将所有服务添加到 ServiceManager
,然后 startAsync()
启动时管理器和 stopAsync()
关闭时。为此,您需要一个服务器侦听器。
可以通过覆盖 AbstractScheduledService
的 executor()
方法并返回一个使用 ThreadFactory
生成守护线程的执行程序来将服务线程指定为守护进程,但请注意如果你这样做,执行器不会自动关闭 if/when AbstractScheduledService
本身会停止(尽管你可以向服务添加一个侦听器,就像默认的 executor()
实施)。
也就是说,我建议 ServiceManager
加上服务器侦听器。该方法应确保您的服务有序关闭。