필요에 따라 여러 방법으로 JAX-RS(Java™ API
for RESTful Web Services) 애플리케이션을 구성할 수 있습니다.
Java EE(Java
Platform,
Enterprise Edition)
6 기능을 활용하려는 경우 어노테이션 스캔 기능을 사용할 수 있습니다.
어노테이션 스캔을 사용하면 JAX-RS javax.ws.rs.core.Application 서브클래스를 생략하거나
최소로 정의된 javax.ws.rs.core.Application 서브클래스를 보유할 수
있습니다.
이 태스크 정보
JAX-RS 1.1 스펙은 JAX-RS 애플리케이션을 구성하는 여러 새 방법을
지원합니다. 기본 어노테이션 스캔을 사용하여 애플리케이션의 자동 구성에 유용할 수 있습니다.
선택적으로 javax.ws.rs.core.Application 서브클래스를 애플리케이션에 추가하고
javax.ws.rs.ApplicationPath 어노테이션 또는 web.xml 서블릿 정의를
사용하여 필요한 URL 패턴을 추가할 수 있습니다. IBM® JAX-RS
구현을 사용하는 경우 서블릿 클래스 구현은 지정하지 않아도 됩니다.
JAX-RS 애플리케이션을 시작할 때 웹 모듈의 구성에 자동으로 추가되기 때문입니다.
web.xml 파일을 사용할 때
Java 서블릿 3.0 web.xml
파일을 사용해야 합니다.
프로시저
- web.xml 파일에서 하나의 JAX-RS 기본 애플리케이션으로만 JAX-RS 애플리케이션을
구성하십시오. 하나의 JAX-RS 애플리케이션만 필요하고
단일 URL 패턴 이후에 모든 자원 클래스가 있는 경우 이 방법을 사용합니다.
또한 필요하면 이 방법에서 보안 제한조건을 지정할 수도 있습니다.
- 모든 JAX-RS 자원 및 제공자 클래스를 웹 애플리케이션의
WEB-INF/classes 또는 WEB-INF/lib 디렉토리에 추가하십시오. 웹 애플리케이션에 javax.ws.rs.core.Application 서브클래스를 추가하지
않아도 됩니다.
- web.xml 파일에서
javax.ws.rs.core.Application을 서블릿 이름으로 사용하는 서블릿 정의를 추가하십시오. 서블릿 클래스를 추가하지 않아도 됩니다. web.xml 파일에
서블릿 URL 패턴을 추가해야 합니다. 애플리케이션 서버 런타임 환경은
JAX-RS 애플리케이션이 시작된 시점에 특정
IBM JAX-RS
구현을 웹 모듈의 구성에 추가합니다. 예를 들어, 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
이제 JAX-RS 자원이 다음과 같은 URL에서 사용 가능합니다.
http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern}/{value_of_@javax.ws.rs.Path}
- javax.ws.rs.core.Application 서브클래스 및 web.xml 파일을 사용하여
JAX-RS 애플리케이션을 구성하십시오. 다중 JAX-RS 애플리케이션이
필요하거나 특정 URL 패턴의 특정 JAX-RS 애플리케이션에 특정 자원만 필요한 경우
이 방법을 사용합니다. 또한 필요하면 이 방법에서 보안 제한조건을 지정할 수도 있습니다.
- javax.ws.rs.core.Application 서브클래스를 작성하십시오. javax.ws.rs.core.Application 서브클래스 getClasses() 또는
getSingletons() 메소드에서 관련 JAX-RS 자원 및 제공자를 리턴하십시오.
getClasses() 및 getSingletons() 메소드 모두에서 빈 세트를 리턴하는 경우
애플리케이션에서 찾은 모든 JAX-RS 자원 및 제공자 클래스가 JAX-RS 애플리케이션
서브클래스에 추가됩니다. 예를 들어, 다음과 같습니다.
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
이 예제에서는 빈 세트를 리턴하는 javax.ws.rs.core.Application
서브클래스 getClasses() 및 getSingletons() 메소드의 기본 구현을 사용합니다.
따라서 모든 관련 JAX-RS 클래스는 javax.ws.rs.core.Application 서브클래스에서 리턴된다고 가정됩니다.
- 웹 애플리케이션에 javax.ws.rs.core.Application 서브클래스를 추가하십시오.
- web.xml 파일에서 부분 서블릿 정의를 추가하십시오. 서블릿 이름은 javax.ws.rs.core.Application 서브클래스의 전체 이름입니다.
서블릿 클래스를 정의하지 마십시오. web.xml 파일에
서블릿 URL 패턴을 추가해야 합니다. 애플리케이션 서버 런타임 환경은
JAX-RS 애플리케이션이 시작된 시점에 특정
IBM JAX-RS
구현을 웹 모듈의 구성에 추가합니다. 예를 들어, 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>com.example.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
이제 JAX-RS 자원이 다음과 같은 URL에서 사용 가능합니다.
http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern_for_Application_subclass}/{value_of_@javax.ws.rs.Path}
- web.xml 파일 없이 JAX-RS 애플리케이션을 구성하십시오. web.xml 파일을 사용하지 않으려는 경우 이 방법을 사용합니다. 이 방법을
사용하는 경우 보안 제한조건을 지정할 수 없습니다. 보안 제한조건을 지정하려면
web.xml 파일을 사용해야 합니다.
- javax.ws.rs.core.Application 서브클래스를 작성하십시오. javax.ws.rs.core.Application 서브클래스 getClasses() 또는
getSingletons() 메소드에서 관련 JAX-RS 자원 및 제공자를 리턴하십시오.
getClasses() 및 getSingletons() 메소드 모두에서 빈 세트를 리턴하는 경우
애플리케이션에서 찾은 모든 JAX-RS 자원 및 제공자 클래스가 JAX-RS 애플리케이션
서브클래스에 추가됩니다. 예를 들어, 다음과 같습니다.
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
이 예제에서는 빈 세트를 리턴하는 javax.ws.rs.core.Application
서브클래스 getClasses() 및 getSingletons() 메소드의 기본 구현을 사용합니다.
따라서 모든 관련 JAX-RS 클래스는 javax.ws.rs.core.Application 서브클래스에서 리턴된다고 가정됩니다.
- javax.ws.rs.ApplicationPath 어노테이션을
javax.ws.rs.core.Application 서브클래스에 추가하십시오. ApplicationPath 어노테이션은 JAX-RS 1.1 스펙에서 지원됩니다.
ApplicationPath 어노테이션의 값은 web.xml 파일에서 서블릿 URL 패턴과 동등한
서블릿 URL 패턴으로 사용됩니다. 예를 들어, 다음과 같습니다.
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- 웹 애플리케이션에 javax.ws.rs.core.Application 서브클래스를 추가하십시오. 애플리케이션이 시작되면 다음 URL에서 자원이 사용 가능합니다.
http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_@javax.ws.rs.ApplicationPath}}/{value_of_@javax.ws.rs.Path}
결과
자동으로 애플리케이션을 구성하는 데 도움이 되는 어노테이션 스캔을
활용하여 JAX-RS 1.1 지원 메소드를 통해 JAX-RS 애플리케이션을 구성했습니다.