복붙노트

[SPRING] 스프링 부트의 임베디드 바람둥이 전쟁을 어떻게 확장 할 것인가?

SPRING

스프링 부트의 임베디드 바람둥이 전쟁을 어떻게 확장 할 것인가?

웹 응용 프로그램이있는 전쟁 아카이브가 있습니다. 내 Spring Boot 애플리케이션 내에서 그 애플리케이션을 시작하고 싶다. 나는 그 질문에서 조언을 따랐다.

@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
    return new TomcatEmbeddedServletContainerFactory() {

        @Override
        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
            try {
                tomcat.addWebapp("blog", "/tmp/roller.war");

            } catch (ServletException ex) {
                throw new IllegalStateException("Failed to add webapp", ex);
            }
            return super.getTomcatEmbeddedServletContainer(tomcat);
        }

    };
}

그것은 전쟁이 추출되지 않는 것을 제외하고는 꽤 잘 작동합니다.

그것은 tomcat 작업 디렉토리의 레이아웃입니다.

$ find /tmp/tomcat.9153500015669016883.8080/
/tmp/tomcat.9153500015669016883.8080/
/tmp/tomcat.9153500015669016883.8080/work
/tmp/tomcat.9153500015669016883.8080/work/Tomcat
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/blog
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/ROOT

ExpandWar.expand ()의 중단 점은 webapps /에 디렉토리를 만들려고합니다. 이 존재하지 않는 webapps 폴더는 Host.getAppBaseFile () (ContextConfig.context에서 제공)에서 가져옵니다.

그래서 저에게는 뭔가 이상한 설정이되어 있고 작업 / Tomcat / localhost / blog로 확장되어야합니다. 어떻게해야합니까?

해결법

  1. ==============================

    1.이것이 봄과 관련이 없지만 임베디드 바람둥이의 예상되는 행동 인 것으로 보인다. 나는이 관련 문제를 발견 :

    이것이 봄과 관련이 없지만 임베디드 바람둥이의 예상되는 행동 인 것으로 보인다. 나는이 관련 문제를 발견 :

    배포 전에 기본 appBase 디렉토리를 만드는 것이 트릭입니다.

    tomcat.getHost().getAppBaseFile().mkdir();
    tomcat.addWebapp("blog", "/tmp/roller.war");
    
  2. from https://stackoverflow.com/questions/37742240/how-to-expand-war-in-spring-boots-embedded-tomcat by cc-by-sa and MIT license