복붙노트

[SPRING] Java Spring 부트 - Tomcat에 배포하지 않는 war 파일 Apache

SPRING

Java Spring 부트 - Tomcat에 배포하지 않는 war 파일 Apache

Java Spring 부트 프로젝트를 빌드 중입니다. 요구 사항에 따라 프로젝트를 war 파일로 생성해야합니다. 그런 다음 Tomcat Apache 만 실행하면됩니다.

나는 war 파일을 만들었지 만 배포하려고 할 때 구조가 올바르지 않은 것처럼 보이고 404 프로젝트를 보려고하는 것처럼 생성됩니다.

해결법

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

    1.스프링 부트를 전쟁으로 전개하려면 Application 클래스를 재구성해야한다.

    스프링 부트를 전쟁으로 전개하려면 Application 클래스를 재구성해야한다.

    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html#howto-create-a-deployable-war-file

    @SpringBootApplication
    public class Application extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Application.class, args);
        }
    
    }
    

    pom.xml에 더하다

    <packaging>war</packaging>
    

    내가 maven을 사용함에 따라 나는 또한 의존성을 추가했다.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

    내 응용 프로그램은 프론트 엔드 표현 레이어로 reactjs를 사용하고 API 레이어처럼 Java를 사용한다는 점에서 복잡했습니다. reactjs 빌드를 main / src / webapps로 옮겨야했습니다. 그러면 js, css 및 html 파일의 번들로 올바르게 war 파일에서 렌더링됩니다. 반응 레이어가 프리젠 테이션 레이어 역할을하면 API를 통해 자바쪽에 만 연결할 수 있습니다. 따라서 URL 구조가 중요하며 모든 것을 루트에서 실행하게했습니다. 따라서 Tomcat에 배포하는 경우 ROOT.war이라는 war 파일의 이름을 변경해야 할 수 있습니다.

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

    2.내부에 애플리케이션 서버를 포함하여 application.jar로 Spring-Boot 빌드.

    내부에 애플리케이션 서버를 포함하여 application.jar로 Spring-Boot 빌드.

    Spring Boot는 Spring 기반의 프로덕션 수준의 응용 프로그램과 서비스를 최소한의 소란으로 쉽게 만들 수 있도록합니다. 새로운 사용자와 기존 사용자가 필요한 비트 수를 빠르게 얻을 수 있도록 Spring 플랫폼의 견해를 엿 봅니다. 이를 사용하여 'java -jar'또는보다 일반적인 WAR 배포를 사용하여 시작할 수있는 독립형 Java 응용 프로그램을 만들 수 있습니다. 또한 'spring scripts'를 실행하는 명령 줄 도구도 제공합니다.

    https://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone

    nohup java -jar app.jar &
    
  3. ==============================

    3.스프링 부트 웹 프로젝트의 실제 예제 WAR 부트 용 웹 애플리케이션

    스프링 부트 웹 프로젝트의 실제 예제 WAR 부트 용 웹 애플리케이션

    maven을 통한 일반적인 SpringBoot 앱 빌드는 패키지화 된 jar입니다.

    WAR로 수정하고 WEB-INF의 내용이 올바른지 확인하십시오.

    war로 패키징 된 스프링 부트 애플리케이션은 별도로 Tomcat에 배치하는 것이 아니라 Spring 부트 애플리케이션 (main 메소드를 통해)을 통해 직접 실행하는 것이다. 테스트 할 필요가 있지만 내 이해에 따라 누군가가 바람둥이 안에 배치 할 것을 제안한다면 정규 웹 응용 프로그램을 요구하는 사람들에게 알려야합니다. SpringBoot 응용 프로그램.

    각 Spring Boot Application은 자체 컨테이너를 실행합니다.

    또한 템플릿 디렉토리에 뷰 파일을 보관하는 경우 Thymeleaf를 사용하지 않는 경우 템플리트 디렉토리에서 정적 컨텐츠로 선택할 수 없습니다.

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

    4.기존 배포 페이지에 따르면 종속성을 추가해야합니다.

    기존 배포 페이지에 따르면 종속성을 추가해야합니다.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    
  5. from https://stackoverflow.com/questions/46699556/java-spring-boot-war-file-not-deploying-on-tomcat-apache by cc-by-sa and MIT license