봄 부팅 : 웹 프로젝트, 바람둥이 배포의 외부 형태에 WAR 패키지에 배치

면책 조항 :이 문서는 블로거 원본입니다은 허용 블로거없이 복제 할 수 없다. https://blog.csdn.net/fly910905/article/details/90519424

구성 단계 :

1 상속 SpringBootServletInitializer

  • 컨테이너의 배포 외부는, 다음은 주요 기능의 응용 프로그램에 의존 할 수는 없지만 오히려 스프링 애플리케이션 컨텍스트를 시작하십시오 web.xml을 구성 파일과 유사한 방식으로 , 우리는 상속 SpringBootServletInitializer의 구성에 수업을 시작하고 메소드를 구현해야합니다

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SdkCmsApplication extends SpringBootServletInitializer {
    /**
     * @Title: 使用外置tomcat部署
     * @MethodName:  configure
     * @param application
     * @Return org.springframework.boot.builder.SpringApplicationBuilder
     * @Exception
     * @Description:
     *
     * @author: FLY
     * @date:  2019-05-24 14:02
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

        return application.sources(SdkCmsApplication.class);
    }

    public static void main(String[] args) {

        SpringApplication.run(SdkCmsApplication.class, args);
    }

}

 

  • 이러한 유형의 구성의 역할은 유사한 web.xml에 리스너 역할에 Spring 애플리케이션 컨텍스트를 초기화 할 책임이 있지만, 추가 XML 파일에 기록 할 필요가 없습니다.

 2, pom.xml 파일은 관련 구성 바람둥이을 수정

후속 문제를 포함 것이, 종속성 받는다는 범위의 범위의 개념을 소개합니다.

메이븐은 다음과 같이 여러 종속 범위가 존재한다 종속 관계 범위가 사용 제어 세 종류 CLASSPATH (컴파일러 래스 테스트 래스 실행 CLASSPATH)에 의존한다 :

  • 컴파일 의존 범위를 컴파일합니다 . 지정되지 않은 경우, 기본값은 범위에 따라 달라집니다. 테스트를 컴파일이 의존 범위 메이븐 의존성을 사용하여 세 가지 클래스 경로의 작동은 유효합니다. 전형적인 예는, 스프링 코드, 컴파일, 테스트 및 실행하는 시간에 의존성을 사용해야합니다.

  • 테스트 : 테스트 범위를 사용합니다 . 메이븐 의존성의 사용 시간에 따라 범위는 테스트 클래스 패스를 들어,이 컴파일 된 코드의 사용에 의존 사용하거나 주요 프로젝트를 실행할 수 없습니다 유효합니다. 전형적인 예는 만 테스트를 실행할 때 컴파일 및 테스트 코드하는 데 필요한, Jnuit입니다 .

  • 제공 : 종속 범위를 제공 . 컴파일하고 클래스 경로를 테스트하기위한 효과적인이 의존 범위 메이븐 의존성을 사용하지만 실행 시간 . 전형적인 예는 컴파일하고 필요할 때 의지 시험 항목, 서블릿-API이지만, 프로그램이 실행 중일 때, 컨테이너 이후 및 제공하는, 다시 도입 반복 Maven을 할 필요가 없다.

  • 더 범위 설명 참조 : https://blog.csdn.net/fly910905/article/details/78089359

당신은 전쟁의 최종 패키지의 형태를 변경하려는 경우 당신은 또한 스프링 부팅 스타터 웹 임베디드 바람둥이 컨테이너를 포함하고 있기 때문에 pom.xml 파일을 수정해야하기 때문에 오류가 직접 용기 충돌 외부에 배포한다.

다음과 같이 해결하는 방법은 두 가지가 있습니다

방법 1 :

<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>

여기에 포함 된 톰캣에 대한 종속성을 제거, 그래서 전쟁 패키지를 재생해야, 그것은 lib 디렉토리 항아리 패키지에 톰캣 관련이 포함되지 않거나 시작 오류가 발생합니다.

중요한 핵심은 제공해야합니다 범위 내에서 그 바람둥이 - 포함 - 재스퍼도이다.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

SpringBootServletInitializer가에서 javax.servlet에 의존하지만, 바람둥이-포함 - 재스퍼가이에서 javax.servlet에 바람둥이 - 포함 코어를 따라 할 필요가 있기 때문에, 제공 쓸모없는 경우, 그래서 전쟁이 서블릿 API를 항아리의 마지막 싸움이 될 것입니다 톰캣 자체와 충돌 .

중요한 점은 이하라고하는 두 번째 방법에 적합하다.

방법 2 :

그것은 바로 다음과 같은 구성을 추가 할 수 있습니다 :

스프링 부팅 스타터 톰캣 부트 스프링의 기본 구성, 스프링 삽입 톰캣 즉 부팅 될 것이며 그 때문에 별도로 톰캣 (의존) 네거티브 패킷 포장시에 제공되도록 설정 실행, 봄 부팅 임베디드 톰캣은을 사용할 필요가있다 .

        <!--部署成war包时开启【同时支持war和jar启动部署】↓↓↓↓-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--部署成war包时开启【同时支持war和jar启动部署】↑↑↑↑-->

역할을 구비 한 상기 설명은 매우 철저하고, 장황한가없는,

이 방법의 장점은 것입니다 시작하고 외부 용기에 배포 명령 -jar 모두 자바에 적합한 전쟁 패키지를 포장.

3, 항아리 될 전쟁

<포장> 전쟁 </ 포장>

네, 문제에 대한 관심

4.1 프로젝트 이름과 일관성의 패키지 이름

패키지의 이름을 표시해야한다이 시간과 application.properties에서 

server.context 경로는 = / SDK-CMS

여기에 기록 된대로, SpringBooot2.x을 참고 server.servlet.context 경로 =

일관된

<build>
    <finalName>sdk-cms</finalName>
</build>

당신이 웹 어플리케이션을 공개하지 않는 경우 바람둥이 컨텍스트로 변경됩니다

4.2, 톰캣 버전

SpringBoot2.x는 Tomcat8.5의 위 버전을 사용하십시오

기본 톰캣 버전 9.0.14은 SpringBoot2.1.2입니다
SpringBoot1.5.6 기본 톰캣 버전은 8.5.16이다

추천

출처blog.csdn.net/fly910905/article/details/90519424