如果spring-boot中的嵌入式tomcat实例失败(例如,端口已在使用中)。 Spring boot应用程序没有意识到。 TomcatEmbeddedServletContainer使用“StandardSerice”添加连接器,它只捕获异常并记录它。 StandardService是一个tomcat类,因此无法在spring-boot的范围内进行更改。
是否有人有解决方案可能会监听tomcat生命周期事件以在spring应用程序中捕获此故障并退出?
这是使用弹簧启动1.1.4。通过从eclipse启动应用程序的Main类或运行使用spring-boot maven插件构建的可执行jar,可以看到相同的行为。
答案 0 :(得分:0)
您没有说明您使用的Spring Boot版本,或者您运行应用程序的方式,这使得很难提供明确的答案。
在运行java -jar
的1.1.4.RELEASE中,gradle bootRun
或mvn spring-boot:run
应该失败,并在发生端口冲突时退出。如果您直接在IDE中运行应用程序,那么known problem表示应用程序不会退出。它已在最新的1.1.5快照中修复。