方案:
Apache Tomcat 6.0在Windows Server 2008 R2上作为服务启动,使用的 Package 器(org.tanukisoftware.wrapper.WrapperStartStop
)使用org.apache.catalina.startup.Bootstrap
。在Tomcat启动过程中,还启动了一个Web应用程序。此Web应用程序需要连接到远程数据库并检查连接。如果数据库不可用,它会重试连接几次,然后在尝试x次后关闭。
问题:
当数据库连接不可用时,我需要在Web应用程序退出后停止Apache Tomcat。
可能的解决方案:
- 从Web应用程序中停止Apache Tomcat(已经尝试了关闭端口,但由于连接被拒绝而无法工作-使用独立的Java应用程序它可以工作)
- 从Web应用程序中调用外部Java应用程序
- 配置Apache Tomcat在唯一的Web应用程序关闭时关闭-我找不到这样做的方法
有什么想法吗?换个方式?
3条答案
按热度按时间wqnecbli1#
如果没有配置安全管理器,webapp中的
System.exit(0)
将关闭Tomcat示例。从独立服务器工作,不确定它是否作为Windows服务运行时工作。
编辑:虽然你可能想读这个:Calling System.exit() in Servlet's destroy() method
oknrviil2#
当Tomcat启动时,您实际上使用参数
start
调用org.apache.catalina.startup.Bootstrap::main
。要停止Tomcat,请使用命令stop
调用相同的类/方法。您不需要另一个Java进程,只需静态调用main
方法。查看Javadoc:http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/startup/Bootstrap.html
如果您不想依赖于Tomcat库,只需执行一些反射魔术。
niknxzdl3#
好吧,我很确定这是一个糟糕的方法,但像你一样,我一直无法想出一个更好的解决方案。
字符串
这基本上会告诉 Catalina 自杀。