2017-02-22 48 views
0

單彈簧引導WAR的項目,我有三個項目:建立部署

project-A 
project-B 
project-C 

project-A我已經定義了數據模型。 Project-B是一個Spring Boot項目,其中我定義了使用RestTemplate來消費其他API調用的操作。 Project-C也是一個Spring Boot項目,我公開了一些REST服務。 第二個項目(B)需要第一個項目(A)的依賴關係。第三個項目(C)需要第一個和第二個項目(A,B)的依賴關係。我已經在各自的項目(B,C)pom文件中定義了這些依賴關係。 所有三個項目都有pom包裝類型。

現在我想創建一個單獨的Spring Boot WAR項目以部署在tomcat服務器上。我的目的是讓這個WAR封裝所有其他項目(A,B,C)。所以我希望能夠通過這個WAR來讓我的休息服務(project-C)可以訪問。

我試圖創建與封裝類型war一個春天啓動的項目,並添加依賴於project-C(其中包括project-Aproject-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項目打包爲pom中的一個war,並排除spring-boot-starter-web依賴項中的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中war文件的部署問題,但現在我想在Tomcat中訪問我的rest服務(project-C)。我的戰爭文件不包含任何Java代碼。它只包含其餘服務(項目C)的依賴關係。 –