2017-02-22 25 views
0

У меня есть три проекта:Построить один проект Spring загрузки WAR для развертывания

project-A 
project-B 
project-C 

В project-A я определил модель данных. Project-B - проект Spring Boot, в котором я определяю операции для использования вызовов API для отдыха с RestTemplate. Project-C также является проектом Spring Boot, в котором я размещаю некоторые службы REST. Второй проект (B) требует зависимости для первого проекта (A). Третий проект (C) требует зависимостей для первого и второго проектов (A, B). Я определил эти зависимости в соответствующих проектах (B, C) pom-файлах. Все три проекта имеют тип упаковки pom.

Теперь я хочу создать отдельный проект WAR для Spring Boot для развертывания на сервере tomcat. Моя цель состоит в том, чтобы эта единственная WAR, которая инкапсулирует все другие проекты (A, B, C). Поэтому я хочу, чтобы мои службы отдыха (project-C) были доступны через эту единственную WAR.

Я попытался создать Spring загрузки проекта с упаковки типа war и добавил зависимость для project-C (который включает в себя зависимости для project-A и project-B), но я не в состоянии развернуть сгенерированный WAR файл из-за:

SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mywarproject-war-0.0.1-SNAPSHOT]] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [[email protected]] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) 
     at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4842) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4974) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     ... 10 more 
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [[email protected]] 
     at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140) 
     at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:708) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     ... 13 more 
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file 
     at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113) 
     at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) 
     ... 16 more 
Caused by: java.util.zip.ZipException: error in opening zip file 
     at java.util.zip.ZipFile.open(Native Method) 
     at java.util.zip.ZipFile.<init>(ZipFile.java:219) 
     at java.util.zip.ZipFile.<init>(ZipFile.java:149) 
     at java.util.jar.JarFile.<init>(JarFile.java:166) 
     at java.util.jar.JarFile.<init>(JarFile.java:103) 
     at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:110) 

Есть ли способ, каким образом я могу справиться с этим подходом?

+0

Имя файла WAR? –

+0

Это похоже на mywarproject-war-0.0.1-SNAPSHOT –

ответ

1

Вы должны упаковать свой проект Spring-Boot в качестве войны в вашем помпе и исключить зависимость spring-boot-starter-tomcat в зависимости от весны-загрузки-стартера.

<packaging>war</packaging> 


    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Вы должны сделать это в своем проекте REST-Services, который является Project-C в вашем случае.

+0

Это решило проблему развертывания моего военного файла в Tomcat, но теперь я хочу получить доступ к моим службам отдыха (проект-C) в Tomcat. Мой файл войны не содержит никакого Java-кода. Он содержит только зависимость остальных услуг (проект-С). –