【问题标题】:Deploying a third party war in a Spring Boot embedded container在 Spring Boot 嵌入式容器中部署第三方战争
【发布时间】:2014-07-08 14:16:58
【问题描述】:

请原谅,如果这感觉有点“死灵贴”。我查看并发现只有一个类似的问题在这里没有答案 (Spring-Boot Embedded Wars)。

我有一个服务打包到一个 spring boot (1.0) 容器中。该服务使用activiti (www.activiti.org) 来管理一些业务流程。我正在尝试部署在同一个 spring boot 容器中,即 activiti-explorer 的战争。这场战争有它自己的 web.inf、spring config 等等,所以它可能会与现有的 spring 配置冲突,但尽管如此,我还是想尝试按原样部署这场战争。

我还没有找到任何方法,并且怀疑spring boot不支持将预包war部署到嵌入式容器中,不是吗?

作为一个警告,我认为我不能将提取的战争放入 spring-boot jar 中,因为我觉得它需要一个功能齐全的 Web 容器。如果 spring-boot 不提供这个功能,没什么大不了的,我们将在它自己的 tomcat 上部署那个战争,但如果可以的话,它会很方便。

谢谢


更新 为了清楚起见,我有一个已经运行的 Spring Application 独立服务器,它有自己的嵌入式 Tomcat。 在嵌入式 Tomcat 中,我插入了一些我开发的 @Controllers。 然后我还能够使用 ServletRegistrationBean(映射到 /servlet-path)映射第三方 servlet。

现在我想对另一个包含完整 Web 应用程序的战争做类似的事情(它是一个 vaadin/spring 3.2 应用程序,具有自己的库、jsps、静态资源......)并且想将它映射到(比如说)/war-path。

我想将战争放在一个众所周知的位置并将其部署到带有(比如说)WarRegistrationBean 的 tomcar 中,这将让 Tomcat 处理所有类加载障碍(正如我所提到的,战争使用的是 spring 3.2 而我使用带有弹簧靴的 4.0,...)。 我怀疑 spring-boot 不支持最后一个功能,或者 - 可能 - 甚至超出项目本身的范围。

【问题讨论】:

  • 不确定您所说的“功能齐全”是什么意思。您要添加的嵌入式tomcat不是“功能齐全”吗?

标签: spring-boot activiti


【解决方案1】:

您可以通过添加引导插件所做的事情(来自加载程序的类和一些 META-INF 信息)来手动增强战争存档。最简单的方法是简单地增强“空”战争,然后将其与目标战争合并(通过爆炸它们并重新震荡)。您唯一需要添加的可能是一个主类。

这仍然是 Boot 工具中的一个空白。如果您认为需要填写,请提出问题和/或发送一些代码。

【讨论】:

  • 重点是我不想接触第三方战争(在这种情况下是一个开源项目并且可能会这样做,但这可能并不总是可行的)。更喜欢“按原样”部署它,因为它来自 maven Central 或第三方供应商。同时,我会看看我能做些什么,谢谢你的信息。
  • 另外,为了更清楚一点:我不希望我的 main 被打包在第三方战争中。我希望我的 main 与它的类、控制器等一起放在它自己的 jar 中,然后,除此之外,将另一个第三方战争映射到嵌入式 Tomcat 中的特定端点.
  • 一次一步怎么样?您的 main 可以位于类路径上的任何位置。 此外的东西可能很大程度上取决于第三方战争的结构方式。
  • @alexmalgaroli 那么你的最终解决方案是什么?
  • 遗憾的是,没有真正的解决方案。我们将战争保留在另一个 tomcat 实例上。我们决定不要花费太多精力,因为这可能需要通过在 tomcat(或码头)内部注册一些基于 tomcat(或码头)如何部署战争的自定义处理程序来完成。所以它变得严重依赖容器,我们不想这样做。
猜你喜欢
  • 2019-03-23
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2019-03-21
  • 2016-08-16
  • 2019-09-30
  • 1970-01-01
相关资源
最近更新 更多