복붙노트

[SPRING] 전용 바람둥이에 war 파일로 spring-boot 어플리케이션을 배치하는 것이 효과가 없습니다.

SPRING

전용 바람둥이에 war 파일로 spring-boot 어플리케이션을 배치하는 것이 효과가 없습니다.

스프링 부트 응용 프로그램을 가지고 있으며 이제 전용 Tomcat 서버에 응용 프로그램을 배포하고 포함 된 Tomcat을 사용하지 않으려합니다. 배포시 두 가지 방법 모두 오류가 발생하지 않습니다.

나는 spring-boot-starter-tomcat 의존성을 위해 제공된 scope =를 주었다.

임베디드 바람둥이 (적절하게 변경된 내용 포함)로 응용 프로그램을 실행할 때 http : // localhost : 8080 / testGET 링크를 누르면 완벽하게 작동합니다. 하지만 범위가 제공된 전용 톰캣에서 http : // localhost : 8080 / test-results-upload-1.0 / testGET 또는 http : // localhost : 8080 / testGET 링크를 누르면 응답이 나타납니다. / error에 매핑됩니다.

이걸 도와주세요. 내가하고있는 실수를 이해할 수 없다. ..

미리 감사드립니다.

 @EnableAutoConfiguration
 @Configuration
 @EnableWebMvc
 @ComponentScan("com............controller")
 @Import(SpringMongoConfig.class)
 public class BootStrap extends SpringBootServletInitializer {

    public static void main(String[] args) {
       SpringApplication.run(BootStrap.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(
           SpringApplicationBuilder application) {
       return application.sources(BootStrap.class);
    }
}

.

  @Controller
  public class Controller {

     @Autowired(required = true)
     private IRepository config;

     @RequestMapping(value = "/testGET", method = RequestMethod.GET)
     public String testGet(HttpServletResponse response) {
        try {
           response.sendError(HttpStatus.OK.value());
           return "Application working perfectly !";
        } catch (IOException e) {
           e.printStackTrace();
           return null;
        }
     }
  }

.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test-results-upload</groupId>
<artifactId>test-results-upload</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<properties>
    <spring.boot>1.1.5.RELEASE</spring.boot>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>${spring.boot}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-webmvc</artifactId>
        <version>2.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
        <version>${spring.boot}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring.boot}</version>
        <type>maven-plugin</type>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.2</version>
    </dependency>
</dependencies>

<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

해결법

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

    1.BTW에서는 application.properties 파일에 다음 속성을 설정하여 독립 실행 형 스프링 부팅 응용 프로그램에 컨텍스트 경로를 추가 할 수 있습니다.

    BTW에서는 application.properties 파일에 다음 속성을 설정하여 독립 실행 형 스프링 부팅 응용 프로그램에 컨텍스트 경로를 추가 할 수 있습니다.

    server.contextPath = / test-results-upload-1.0

    이렇게하면 독립 실행 형을 배포했는지 아니면 외부 컨테이너를 통해 배포했는지에 관계없이 동일한 contextPath를 갖게됩니다.

  2. ==============================

    2.이 질문이 처음으로 나왔다. Maven을 사용하여 Tomcat 서버 (외부)에 배포 된 WAR 패키지로 제공되는 Spring 부팅 애플리케이션을 공유 한 적이있다.

    이 질문이 처음으로 나왔다. Maven을 사용하여 Tomcat 서버 (외부)에 배포 된 WAR 패키지로 제공되는 Spring 부팅 애플리케이션을 공유 한 적이있다.

  3. ==============================

    3.response.sendError (HttpStatus.OK.value ())에 대한 호출을 제거합니다.

    response.sendError (HttpStatus.OK.value ())에 대한 호출을 제거합니다.

    첫째, HTTP OK (200) 응답은 오류가 아니며 두 번째로 HTTP OK가 기본 응답 상태이므로 설정하지 않아도됩니다. OK 이외의 값으로 설정하려면 HttpServletResponse.setStatus를 호출해야합니다.

  4. ==============================

    4.메소드 서명에서 (HttpServletResponse 응답)을 제거하여 문제를 해결했습니다. 다른 모든 것은 동일하게 유지됩니다.

    메소드 서명에서 (HttpServletResponse 응답)을 제거하여 문제를 해결했습니다. 다른 모든 것은 동일하게 유지됩니다.

    <의존성>      org.springframework.boot      spring-boot-starter-tomcat      제공됨

    그 후 전쟁 파일을 가져 와서 $ {TOMCAT_DIR} / webapps에 넣고 URL http : // localhost : 8080 / test-results-upload-1.0 / testGET을 치면 작동했습니다 !!!

  5. from https://stackoverflow.com/questions/25870764/deploying-a-spring-boot-application-as-a-war-file-on-a-dedicated-tomcat-is-not-w by cc-by-sa and MIT license