如何将WAR模块加载到Spring的独立运行的内置Tomcat中?

时间:2017-02-06 11:41:06

标签: spring maven spring-boot spring-boot-maven-plugin

我在Maven项目中有三个模块:

parent
  rest-api     #  Spring REST API
  web-client   #  AngularJS web client
  application  #  Project to bundle it all up for a standalone

我不确定我是否有#34; 优雅"解决方案所以,如果完全垃圾,请用棍子打我,但这是它的工作原理 - 或它应该如何工作:

REST的API

模块rest-api只提供REST API和其他核心功能 - 基本上它是纯服务器代码。这是一个jar神器。

Web的客户端

要分离客户端和服务器代码,我有模块web-client。它是一个war项目,用于保存客户端Web应用程序。

应用

这个模块应该把它全部搞定。这取决于rest-apiweb-client。它做了两件重要的事情:

  1. 它的pom.xml使用spring-boot-maven-plugin构建一个独立的可运行jar - 我的最终目标
  2. 它提供了使用main(String args[])
  3. 启动@SpringBootApplication的{​​{1}}方法

    我目前能够告诉Eclipse在servlet容器中运行它。服务器启动,我的两个资源, rest-api web-client 正常工作。到目前为止,一切都很好。

    问题

    什么不完全有效是独立的。如果我打包整个事情并运行服务器:

    SpringApplication.run(EasyModelAccessServer.class, args);

    只有REST API才有效。原因是因为 web-client 没有添加或作为Web应用程序引入Spring内置Tomcat。

    问题

    是我如何使这项工作。我想到了两种选择:

    1. 以某种方式将$ path/to/application: mvn clean package $ path/to/application: java -jar target/application.jar 文件隐藏到web-client.war中,以便它可用作资源并以编程方式调用application.jar(或类似内容)来加载其他服务
    2. 希望tomcat.addWebapp("/web-client", "path/to/web-client.war")或另一个Spring Maven插件能够为我做到这一点并找到一个将我链接到示例的人。
    3. 我已尝试过1.但我没有成功将spring-boot-maven-plugin移至web-client.war,但我也不确定是否应该这样做。

      常见问题

      问:" 为什么要将所有这些模块分开,而不是将所有这些模块合并到application.jar模块中,其中Spring Maven插件可以为您完成所有操作开箱即用?"

      答:我真的想将客户端代码与服务器代码分开。我可以然后将server合并到web-client但是上次我尝试过我还有其他10个问题,为什么这个问题没有成功,所以我决定保持这种方式并且它实际上不应该加载额外的服务器资源。

      问:" 我可以看看这个项目吗?"

      A:是的,你可以。请看一下:https://github.com/silentsnooc/easy-model-access请原谅我,我目前正在使用标签而不是空格 - 一旦我完成所有操作,我就会改变它。

0 个答案:

没有答案