使用ThrowOnFailure属性捕获Tomcat启动时的错误

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2016/11/06/tomcat-throw-on-failure/

Tomcat是一个广泛使用的容器,不仅仅独立使用对外暴露服务,也可以用集成模式运行在其他程序内部或者支持测试。

Tomcat的Connector是一个重要的部分,如果它启动失败,那么意味着容器无法正常对外暴露服务。

在Tomcat中如果Connector启动失败,日志中会打印相关信息(两次),这种情况对于作为独立服务对外暴露的情况还好,查查日志解决问题。如果是作为集成模式的话就有点麻烦了。比如Spring Boot内嵌了Tomcat,为了在启动时给用户提供更好的体验,Spring Boot有一个错误分析器,也就是说当有错误发生的时候给出更友好的提示,而不是简单的打印日志。

自己的代码当然好控制,但是内嵌的Tomcat就是一个问题,外部没法简单获得信息。

Tomcat最近有一个更改解决了这个问题,在Connector中新增了一个throwOnFailure属性,当这个属性为真时,就会抛出LifecycleException错误。

try {
Connector c = new Connector("foo.Bar");
c.setThrowOnFailure(throwOnFailure);
c.start();
}catch (LifecycleException ex){
  // 分析错误
}

 

 

参考:

http://svn.apache.org/viewvc?view=revision&revision=1763769

https://bz.apache.org/bugzilla/show_bug.cgi?id=60152

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2016/11/06/tomcat-throw-on-failure/

发表评论