Maven2 사용법 메모 2(Tomcat에서 JAX-RS)
단순한 서블릿만의 녀석과, JAX-RS(Jersey) 를 사용한 녀석의 2개를 작성한다.
환경
오 S
Windows7 64bit
자바
1.7.0_25
Tomcat
7.0.42
Jersey
2.2
간단한 서블릿 전용 웹 앱
프로젝트의 편지지 만들기
명령 프롬프트에서 임의의 폴더에서 다음 명령을 실행합니다.
편지지 만들기>mvn archetype:create -DgroupId=com.example.servlet -DartifactId=servlet-sample -DarchetypeArtifactId=maven-archetype-webapp
다음과 같은 편지지가 출력됩니다.
만든 편지지의 구성servlet-sample>tree /f
│ pom.xml
│
└─src
└─main
├─resources
└─webapp
│ index.jsp
│
└─WEB-INF
web.xml
서블릿 구현
src/main/java/com/example/servlet
폴더를 만들고 SampleServlet.java
를 만듭니다.
SampleServlet.javapackage com.example.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/sample")
public class SampleServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
ServletOutputStream os = res.getOutputStream();
os.println("Sample Page");
}
}
web.xml 삭제
서블릿의 매핑은 @WebServlet
어노테이션으로 지정하고 있으므로, sample-servlet/src/main/webapp/WEB-INF/web.xml
를 삭제한다.
pom.xml 편집
pom.xml
를 다음 내용으로 편집한다.
pom.xml<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.servlet</groupId>
<artifactId>sample-servlet</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>Sample Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>sample-servlet</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
failOnMissingWebXml 정보
이 설정을하지 않으면 war
를 만들 때 web.xml
가 없어서 오류가 발생합니다.web.xml
는 삭제하고 있으므로 failOnMissingWebXml
에 false
를 지정하고 있다.
war 만들기
다음 명령을 실행합니다.
war 만들기sample-servlet>mvn package
target
폴더 아래에 sample-servlet.war
라는 war
파일이 출력됩니다.
동작 확인
sample-servlet.war
를 Tomcat에 배포하고 Tomcat을 시작합니다.http://localhost:8080/sample-servlet/sample
에 브라우저로부터 액세스한다 (포트 번호는 적절히 읽어들여).
JAX-RS를 사용한 웹 앱
편지지 만들기
명령 프롬프트에서 임의의 폴더에서 다음 명령을 실행합니다.
편지지 만들기>mvn archetype:create -DgroupId=com.example.jaxrs -DartifactId=jaxrs-sample -DarchetypeArtifactId=maven-archetype-webapp
JAX-RS 서비스 클래스 작성
src/main/java/com/example/jaxrs
폴더를 만들고 SampleResource.java
를 만듭니다.
SampleResource.javapackage com.example.jaxrs;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("sample")
public class SampleResource {
@GET
public String sample() {
return "Sample Resource";
}
}
web.xml에 Jersey 서블릿 등록
web.xml<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>JAX-RS Sample Application</display-name>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
설명
init-param
로 지정하고 있는 jersey.config.server.provider.packages
에는, JAX-RS 의 서비스 클래스를 검색하는 패키지를 지정한다.
서비스 클래스의 검색은 서브 패키지도 재귀 적으로 실행된다.
검색 패키지 지정 <init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
여러 패키지를 지정하려면 세미콜론 (;
) 구분 기호로 열거 할 수 있습니다.
여러 검색 패키지 <init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.hoge.jaxrs;com.fuga.jaxrs</param-value>
</init-param>
pom.xml 편집
pom.xml
를 다음과 같이 편집한다.
pom.xml<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.jaxrs</groupId>
<artifactId>jaxrs-sample</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>JAX-RS Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- Servlet コンテナのバージョンが 3.0 より古い場合は "jersey-container-servlet-core" を指定する -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<finalName>jaxrs-sample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
war 만들기
다음 명령을 실행합니다.
war 만들기jaxrs-servlet>mvn package
target
폴더 아래에 jaxrs-servlet.war
라는 war
파일이 출력됩니다.
동작 확인
jaxrs-servlet.war
를 Tomcat에 배포하고 Tomcat을 시작합니다.http://localhost:8080/jaxrs-servlet/rest/sample
에 브라우저로부터 액세스한다 (포트 번호는 적절히 읽어들여).
참고
프로젝트의 편지지 만들기
명령 프롬프트에서 임의의 폴더에서 다음 명령을 실행합니다.
편지지 만들기
>mvn archetype:create -DgroupId=com.example.servlet -DartifactId=servlet-sample -DarchetypeArtifactId=maven-archetype-webapp
다음과 같은 편지지가 출력됩니다.
만든 편지지의 구성
servlet-sample>tree /f
│ pom.xml
│
└─src
└─main
├─resources
└─webapp
│ index.jsp
│
└─WEB-INF
web.xml
서블릿 구현
src/main/java/com/example/servlet
폴더를 만들고 SampleServlet.java
를 만듭니다.SampleServlet.java
package com.example.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/sample")
public class SampleServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
ServletOutputStream os = res.getOutputStream();
os.println("Sample Page");
}
}
web.xml 삭제
서블릿의 매핑은
@WebServlet
어노테이션으로 지정하고 있으므로, sample-servlet/src/main/webapp/WEB-INF/web.xml
를 삭제한다.pom.xml 편집
pom.xml
를 다음 내용으로 편집한다.pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.servlet</groupId>
<artifactId>sample-servlet</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>Sample Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>sample-servlet</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
failOnMissingWebXml 정보
이 설정을하지 않으면
war
를 만들 때 web.xml
가 없어서 오류가 발생합니다.web.xml
는 삭제하고 있으므로 failOnMissingWebXml
에 false
를 지정하고 있다.war 만들기
다음 명령을 실행합니다.
war 만들기
sample-servlet>mvn package
target
폴더 아래에 sample-servlet.war
라는 war
파일이 출력됩니다.동작 확인
sample-servlet.war
를 Tomcat에 배포하고 Tomcat을 시작합니다.http://localhost:8080/sample-servlet/sample
에 브라우저로부터 액세스한다 (포트 번호는 적절히 읽어들여).JAX-RS를 사용한 웹 앱
편지지 만들기
명령 프롬프트에서 임의의 폴더에서 다음 명령을 실행합니다.
편지지 만들기>mvn archetype:create -DgroupId=com.example.jaxrs -DartifactId=jaxrs-sample -DarchetypeArtifactId=maven-archetype-webapp
JAX-RS 서비스 클래스 작성
src/main/java/com/example/jaxrs
폴더를 만들고 SampleResource.java
를 만듭니다.
SampleResource.javapackage com.example.jaxrs;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("sample")
public class SampleResource {
@GET
public String sample() {
return "Sample Resource";
}
}
web.xml에 Jersey 서블릿 등록
web.xml<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>JAX-RS Sample Application</display-name>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
설명
init-param
로 지정하고 있는 jersey.config.server.provider.packages
에는, JAX-RS 의 서비스 클래스를 검색하는 패키지를 지정한다.
서비스 클래스의 검색은 서브 패키지도 재귀 적으로 실행된다.
검색 패키지 지정 <init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
여러 패키지를 지정하려면 세미콜론 (;
) 구분 기호로 열거 할 수 있습니다.
여러 검색 패키지 <init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.hoge.jaxrs;com.fuga.jaxrs</param-value>
</init-param>
pom.xml 편집
pom.xml
를 다음과 같이 편집한다.
pom.xml<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.jaxrs</groupId>
<artifactId>jaxrs-sample</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>JAX-RS Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- Servlet コンテナのバージョンが 3.0 より古い場合は "jersey-container-servlet-core" を指定する -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<finalName>jaxrs-sample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
war 만들기
다음 명령을 실행합니다.
war 만들기jaxrs-servlet>mvn package
target
폴더 아래에 jaxrs-servlet.war
라는 war
파일이 출력됩니다.
동작 확인
jaxrs-servlet.war
를 Tomcat에 배포하고 Tomcat을 시작합니다.http://localhost:8080/jaxrs-servlet/rest/sample
에 브라우저로부터 액세스한다 (포트 번호는 적절히 읽어들여).
참고
>mvn archetype:create -DgroupId=com.example.jaxrs -DartifactId=jaxrs-sample -DarchetypeArtifactId=maven-archetype-webapp
package com.example.jaxrs;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("sample")
public class SampleResource {
@GET
public String sample() {
return "Sample Resource";
}
}
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>JAX-RS Sample Application</display-name>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.jaxrs</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.hoge.jaxrs;com.fuga.jaxrs</param-value>
</init-param>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.jaxrs</groupId>
<artifactId>jaxrs-sample</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>JAX-RS Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- Servlet コンテナのバージョンが 3.0 より古い場合は "jersey-container-servlet-core" を指定する -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<finalName>jaxrs-sample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
jaxrs-servlet>mvn package
Reference
이 문제에 관하여(Maven2 사용법 메모 2(Tomcat에서 JAX-RS)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/opengl-8080/items/f36c570032e1a7555ed2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)