我将SpringBoot2-Application配置为war包,我想在命令行上运行,但也可以在应用服务器中部署。
根据说明,我将依赖项配置为嵌入式Tomcat,范围为"提供"并且还添加了TomcatServletWebServerFactory
来覆盖嵌入式Tomcat的初始化,以便我可以启用jndi.naming
,因为我希望从应用程序服务器的jndi读取数据源。如果我单独启动应用程序,我会在启动时将它添加到嵌入式Tomcat中来提供jndi资源。
这很好地失败了:如果范围是"提供"并且独立启动,我的TomcatServletWebServerFactory
未运行且jndi未激活,因此数据源的查找失败。但是这个包在Wildfly中运行良好。如果我删除"提供",独立应用程序启动正常,但它在Wildfly中崩溃的原因很明显(有一个Tomcat实例启动了许多无法转换为Undertow实例)。
还有其他人经历过此并有解决方案吗? SpringBoot-Maven插件做了什么"隐藏"战争中的嵌入式Tomcat?也许我的TomcatServletWebServerFactory
必须适应"提供的"(隐藏)配置?
感谢所有建议。