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

作者:

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注