복붙노트

[SPRING] Tomcat에서 JAR 대신 WAR로 Spring RESTful 서비스

SPRING

Tomcat에서 JAR 대신 WAR로 Spring RESTful 서비스

나는 Java Spring에서 REST 웹 서비스를 만드는 중이다. STS와 예제를 성공적으로로드했습니다.

"이 가이드는 Spring에서"hello world "RESTful 웹 서비스를 만드는 과정을 안내합니다." http://spring.io/guides/gs/rest-service/

그러나 튜토리얼은 지금까지만 진행됩니다. 서블릿이 포함 된 자체 실행 jar 대신 WAR 파일을 만들고 해당 WAR 파일을 배포하려고합니다. 나는이 튜토리얼을 발견하고 첫 번째 튜토리얼 build.gradle 파일을 수정하려고 시도했다.

"스프링 부트 JAR 애플리케이션을 WAR로 변환" http://spring.io/guides/gs/convert-jar-to-war/

.war 파일에 잘 만들었습니다 .. 서비스가 내 TOMCAT 인스턴스의 관리자에서 실행 중입니다.하지만 서비스를 사용하려고하면 404가 표시됩니다.

404'd

http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName

매핑을 수정해야합니까?

DataBaseController.java

@RequestMapping("/dbgreeting")
    public @ResponseBody DataBaseGreeter dbgreeting(
            @RequestParam(value="name", required=false, defaultValue="World") String name) {
        return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name));
    }

이제 나는 .war 파일을 혼합하여 만들었습니다. 아마도 뭔가를 놓쳤을 까봐 걱정했습니다.

이후로 OSX에서 XAMPP에 Webapp / 폴더가 없기 때문에 대신 Bitnami의 Tomcat 스택을로드해야합니다. 사람들은 일반적으로 이것을 기반으로 XAMPP와 다른 스택을 전환합니까? 또는 뭔가 XAMPP 만든 webapp 폴더를 얻으려면 놓친 거니?

해결법

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

    1.WAR는 특별한 특성을 가진 JAR 일뿐입니다. 배포를 설명하는 web.xml, 응용 프로그램 서버 종속 XML 구성 파일, 일반적으로 lib, 클래스 및 기타 확률 및 종료가 필요한 WEB-INF가 있어야합니다.

    WAR는 특별한 특성을 가진 JAR 일뿐입니다. 배포를 설명하는 web.xml, 응용 프로그램 서버 종속 XML 구성 파일, 일반적으로 lib, 클래스 및 기타 확률 및 종료가 필요한 WEB-INF가 있어야합니다.

    가장 쉬운 방법은 Maven을 사용하여 WAR를 만드는 것입니다. 난 당신이 단순히 pom.xml에서 프로젝트 유형을 JAR에서 WAR로 변경할 수 있어야한다고 생각합니다. 당신이 따라 온 튜토리얼은 Gradle을 사용하는 것으로 보이며, Gradle은 내가 믿는 Maven을 사용하므로 어딘가에 있어야합니다. 그 외에도 WAR를 만드는 방법에 대한 자습서는 google을 참조하십시오. 나는 Tomcat이 특별한 배치 디스크립터를 필요로한다고 생각하지 않는다. 그래서 당신은 웹 만 필요로한다. .xml.

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

    2.(OP에서 대답이 질문에서 여기로 옮겼습니다)

    (OP에서 대답이 질문에서 여기로 옮겼습니다)

    소년 정말 바보 같아 .. gradled 지침을 변경 한 후 튜토리얼에 더 많은 것들이 발견되었다. web.xml에 대한 필요를 대체 / 대체하는 매우 필요한 자동 구성을 포함하여

    서블릿 초기화

    이전에는 응용 프로그램에 spring-boot-gradle-plugin이 java -jar 명령을 사용할 때 실행되도록 구성된 public static void main () 메서드가 포함되었습니다.

    이를 XML 파일이없는 WAR 파일로 변환하면 응용 프로그램을 시작하는 방법에 대해 서블릿 컨테이너에 다른 신호가 필요합니다.

    src / main / java / hello / HelloWebXml.java

    package hello;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.SpringBootServletInitializer;
    
    public class HelloWebXml extends SpringBootServletInitializer {
    
      @Override
      protected void configure(SpringApplicationBuilder application) {
         application.sources(Application.class);
      }
    
    }
    

    첫 번째 대답에 대해서는 공언 할 것이지만 web.xml (또는 Spring-Boot가이를 대체하기 위해 사용하는 것)이 모두 필요하다는 것이 맞습니다.

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

    3.스프링 부트 응용 프로그램이 시작될 때 몇 가지 정보가 출력되기를 기대합니다.

    스프링 부트 응용 프로그램이 시작될 때 몇 가지 정보가 출력되기를 기대합니다.

    일반 Tomcat 인스턴스를 사용해보십시오.

    수동으로 war 파일 검사

  4. from https://stackoverflow.com/questions/19820029/spring-restful-service-as-a-war-instead-of-jar-in-tomcat by cc-by-sa and MIT license