JAX-RS 필터에 대한 web.xml 파일 구성

web.xml 파일은 모듈의 웹 컴포넌트 구조 및 외부 종속성에 관한 정보를 포함하며 런타임 시 컴포넌트 사용 방법을 기술합니다. 웹 컨테이너에서 JAX-RS(Java™ API for RESTful Web Services) 애플리케이션을 사용하려면 필터를 호출할 수 있는 가능한 URL을 표시하는 필터를 정의하도록 web.xml 파일을 구성할 수 있습니다.

이 태스크 정보

JAX-RS 애플리케이션 코드를 사용할 수 있도록 웹 애플리케이션에 대한 web.xml 파일을 구성할 수 있습니다. JAX-RS 코드를 실행하는 데 사용할 IBM® 특정 JAX-RS 필터를 지정할 수 있습니다. web.xml 파일은 웹 애플리케이션을 구성하는 웹 컴포넌트에 대한 구성 및 배치 정보를 제공합니다. 이 배치 디스크립터 파일에 대해 자세히 학습하려면 JAX-RS에 대한 web.xml 파일 구성을 참조하십시오.

서블릿을 사용하는 경우 web.xml에 정의된 서블릿 경로가 기본 URL에 추가됩니다. 필터는 자원 기본 URL에 대한 경로에 추가되지 않습니다. 대신, 필터 URL 맵핑에서 필터를 호출할 수 있는 가능한 URL을 표시합니다. 예를 들어, 루트 자원에서 myresource의 값이 @javax.ws.rs.Path인 경우 자원의 최종 URL은 http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource입니다. 루트 자원을 올바르게 지원하려면 필터의 URL 맵핑 패턴이 myresource와 일치해야 합니다. 예를 들어, URL 패턴으로 /* 또는 /myresource를 사용할 수 있습니다. 애플리케이션에 다중 자원이 있으면 필터의 URL 패턴은 모든 자원과 일치해야 합니다. /* 패턴은 필터의 공통 값입니다.

수신 요청 URL이 JAX-RS 애플리케이션에서 JAX-RS 자원과 일치하지 않으면 요청은 필터 체인의 나머지로 전달됩니다. 애플리케이션에 따라 JAX-RS 애플리케이션에서 요청을 지원하도록 필터 동작을 사용할 수 있습니다. 또는 사용 가능한 JAX-RS 자원이 없으면 JSP(JavaServer Pages)와 같은 기본 웹 컨테이너 아티팩트로 요청을 진행할 수 있습니다. 웹 컨테이너에 일치하는 아티팩트가 없으면 웹 컨테이너는 오류 응답에 대한 책임을 집니다.

프로시저

  1. WEB-INF/web.xml 파일을 여십시오.
  2. WEB-INF/web.xml 파일에서 필터를 정의하십시오. 다음 필터 정의를 WEB-INF/web.xml 파일에 추가하십시오. unique_filter_name을 고유 필터 이름으로 바꾸십시오. 또한 Java_class_name 변수를 JAX-RS 애플리케이션 Java 서브클래스의 전체 Java 패키지 및 클래스 이름으로 바꾸십시오.
    <filter>
             <filter-name>unique_filter_name</filter-name>
             <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
             <init-param>
                     <param-name>javax.ws.rs.Application</param-name>
                     <param-value>Java_class_name</param-value>
             </init-param>
     </filter>
  3. (선택사항) 동일한 웹 애플리케이션에 필요한 JAX-RS 애플리케이션 서브클래스가 여러 개인 경우 추가 필터 초기화 매개변수, requestProcessorAttribute를 WEB-INF/web.xml 파일에 추가하는 필터 정의에 포함해야 합니다. 다음 필터에서 unique_filter_name를 고유한 필터 이름으로 바꾸고, Java_class_name 변수를 JAX-RS 애플리케이션 Java 서브클래스의 전체 Java 패키지 및 클래스 이름으로 바꾸고, unique_identifier 변수를 고유 ID로 바꾸십시오.
    <filter>
       <filter-name>unique_filter_name_a</filter-name>
       <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
       <init-param>
           <param-name>javax.ws.rs.Application</param-name>
           <param-value>Java_class_name_a</param-value>
       </init-param>
       
       <init-param>
           <param-name>requestProcessorAttribute</param-name>
           <param-value>unique_identifier_a</param-value>
       </init-param>
    </filter>
    
    <filter>
       <filter-name>unique_filter_name_b</filter-name>
       <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
       <init-param>
           <param-name>javax.ws.rs.Application</param-name>
           <param-value>Java_class_name_b</param-value>
       </init-param>
            
       <init-param>
           <param-name>requestProcessorAttribute</param-name>
           <param-value>unique_identifier_b</param-value>
       </init-param>
    </filter
  4. 각 필터 정의에 대해 WEB-INF/web.xml 파일에서 필터 맵핑을 추가하십시오.

    필터 맵핑에 지정된 URL 패턴은 IBMRestFilter 필터를 호출하는 올바른 URL 패턴을 컨테이너에 정의합니다. 수신 요청 URL이 URL 패턴과 호환 가능한 경우 IBMRestFilter가 호출됩니다. 요청 URL이 일치하지 않으면, 필터는 호출되지 않습니다. 요청 URL은 항상 필터의 컨텍스트 루트에서 시작합니다. 다음 필터 맵핑 예제를 참조하십시오.

    <filter-mapping>
        <filter-name>filter_name</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    예를 들어, 다음 두 개의 자원이 있다고 가정합니다.
    @javax.ws.rs.Path("myresource")
    public class MyResource {
    
    }
    @javax.ws.rs.Path("myresource2")
    public class MyResource2 {
    
    }
    다음 URL을 사용하여 자원에 도달할 수 있습니다.
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource2

    다음 필터 맵핑을 적용하는 경우,

    <filter-mapping>
            <filter-name>filter_name</filter-name>
            <url-pattern>/myresource</url-pattern>
    </filter-mapping>   
    다음 URL을 방문하여 MyResource 루트 자원을 사용할 수 있습니다.
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource
    이 URL은 IBMRestFilter 필터를 호출하고 URL은 자원을 찾을 수 있습니다. /myresource 경로가 필터 맵핑의 URL 패턴과 일치하므로 IBMRestFilter가 호출되며, 이는 일치하는 @Path 값을 포함하는 루트 자원입니다.
    그러나 다음 URL을 방문한다고 가정하는 경우,
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource2
    IBMRestFilter 필터는 호출되지 않습니다. URL 패턴 /myresource/myresource2와 일치하지 않기 때문입니다.

결과

필터를 적용하도록 WEB-INF/web.xml 파일을 편집한 후에 웹 애플리케이션은 JAX-RS 애플리케이션에 대해 구성됩니다.

다음 예제에서는 JAX-RS 애플리케이션에 필터를 적용하도록 구성된 WEB-INF/web.xml 파일을 보여줍니다. 이 예제는 RestApplication1 필터를 정의합니다. 수신 요청 URL이 RestApplication1 필터의 자원과 일치하면 RestApplication1 필터에서 응답이 생성됩니다. 수신 요청 URL이 RestApplication1 필터의 자원과 일치하지 않지만 OtherRestApplicationFilter의 자원과 일치하면, OtherRestApplicationFilter 필터에서 응답이 생성됩니다. 수신 URL이 두 필터와 모두 일치하지 않으면 JSP와 같은 다른 웹 컨테이너 아티팩트에서 요청을 지원할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 
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_2_4.xsd">

     <filter>
        <filter-name>RestApplication1</filter-name>
        <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.ibm.rest.sample.app1.MyApplication</param-value>
        </init-param>
        <init-param>
            <param-name>requestProcessorAttribute</param-name>
            <param-value>restApplication1ProcessorID</param-value>
        </init-param>
    </filter>
     <filter>
        <filter-name>OtherRestApplicationServlet</filter-name>
        <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.ibm.rest.other.sample.OtherApplication</param-value>
        </init-param>
        <init-param>
            <param-name>requestProcessorAttribute</param-name>
            <param-value>otherRestApplicationID </param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>RestApplication1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>OtherRestApplicationServlet</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

다음에 수행할 작업

웹 애플리케이션을 어셈블하십시오.


주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_configwebxml_jrsfilters
파일 이름:twbs_jaxrs_configwebxml_jrsfilters.html