[SPRING] Tomcat에서 JAR 대신 WAR로 Spring RESTful 서비스
SPRINGTomcat에서 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.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.(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.스프링 부트 응용 프로그램이 시작될 때 몇 가지 정보가 출력되기를 기대합니다.
스프링 부트 응용 프로그램이 시작될 때 몇 가지 정보가 출력되기를 기대합니다.
일반 Tomcat 인스턴스를 사용해보십시오.
수동으로 war 파일 검사
from https://stackoverflow.com/questions/19820029/spring-restful-service-as-a-war-instead-of-jar-in-tomcat by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 자동 와이어 링은 인터페이스에서만 작동합니다. (0) | 2019.02.10 |
---|---|
[SPRING] 스프링 MVC, 앞으로 (0) | 2019.02.10 |
[SPRING] 실제 웹 요청 이외의 요청 범위 Bean 사용 (0) | 2019.02.10 |
[SPRING] 두 개의 항아리 사이의 Spring Boot 및 @ComponentScan (0) | 2019.02.10 |
[SPRING] 봄, 요청 방법 'POST'가 지원되지 않음 [닫힘] (0) | 2019.02.10 |