2017-04-07 2 views
0

저는 스프링 부트에서 새로 왔으며 서블릿 2.5로 구성된 프로젝트에서 사용하려고합니다. 내가 목표로 이클립스 메이븐 플러그인을 실행하면 "봄 부팅 : 실행"실행은 다음과 같은 오류를 반환내 프로젝트에서 스프링 부트 레거시가 작동하지 않습니다.

`[Tomcat-startStop-1] ERROR o.apache.catalina.core.ContainerBase - A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]] 
at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_60] 
at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_60] 
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939) ~[tomcat-embed-core-8.5.11.jar:8.5.11] 
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872) [tomcat-embed-core-8.5.11.jar:8.5.11] 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.11.jar:8.5.11] 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) [tomcat-embed-core-8.5.11.jar:8.5.11] 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.5.11.jar:8.5.11] 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_60] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_60] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_60] 
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60] 

내 프로젝트가 부모와 3 개 모듈, 그 중 하나가 차일 웹 프로젝트가있다.

  • 부모 치어에서

    :

    내 구성은 다음과 같다

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> ... <properties> <springBoot.version>1.5.2.RELEASE</springBoot.version> </properties> ...

    </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${springBoot.version}</version> </dependency>
    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>${springBoot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-legacy</artifactId> <version>1.1.0.RELEASE</version> </dependency> </dependencies> </dependencyManagement>

웹 자식 치어 -In

:

` <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-legacy</artifactId> 
    </dependency> 
</dependencies> 
` 
... 
` 
<plugins> 
    <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
    </plugin> 
</plugins> 
` 
  • 은 web.xml에서 : <listener>
    <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class> </listener>
+0

'spring-boot : run'을 실행하면 web.xml이 무시됩니다. –

+0

그리고 해결책은 무엇입니까? @ M.Deinum –

+0

기존 응용 프로그램의 응용 프로그램 서버에 응용 프로그램을 배포해야합니다. –

답변

0

spring-boot-legacy, 1.1.0.RELEASE은 봄 부팅, 1.4.2.RELEASE와 함께 작동하도록 보장됩니다.

일반적인 스프링 부트에서 작동하는 모든 것이 작동하지 않을 수 있습니다. 프로그래밍 방식으로 정의 된 서블릿 필터와 서블릿 (예 : FilterRegistrationBean 또는 ServletRegistrationBean 사용)은 작동하지 않습니다. 이는 서블릿 2.5의 제한 사항 때문인 것으로 생각합니다. 분명히 Servlet 3.0 주석은 작동하지 않습니다 (예 : @WebServlet)

Tomcat 6은 Servlet 2.5를 지원합니다.

mvn tomcat6:run

<plugin> 
    <artifactId>tomcat6-maven-plugin</artifactId> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <version>2.0</version> 
</plugin> 

또한 당신이 (당신의 "응용 프로그램"클래스를 찾을 수있는 곳으로 SpringBootContextLoaderListener에게 약간의 단서를 제공하는 것이 중요하다 : 그래서 봄 부팅 레거시 응용 프로그램은 같은 것을 사용하여 잘 작동합니다 클래스 @SpringBootApplication)를 포함 예 :

귀하의 web.xml을 같은 것을 포함합니다 :

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>demo.Application</param-value> 
</context-param> 

제한 사항을 이해하면 무엇이 효과가 있습니까?

관련 문제