42.2. 서비스 구현에서 컨텍스트 작업


42.2.1. 개요

컨텍스트 정보는 WebServiceContext 인터페이스를 사용하여 서비스 구현에 제공됩니다. WebServiceContext 개체에서 애플리케이션 범위에서 현재 요청의 컨텍스트 속성으로 채워진 MessageContext 개체를 가져올 수 있습니다. 속성 값을 조작할 수 있으며 응답 체인을 통해 다시 전파됩니다.

참고

MessageContext 인터페이스는 java.util.Map 인터페이스에서 상속됩니다. 해당 내용은 Map 인터페이스의 방법을 사용하여 조작할 수 있습니다.

42.2.2. 컨텍스트 가져오기

서비스 구현에서 메시지 컨텍스트를 가져오려면 다음을 수행합니다.

  1. WebServiceContext 유형의 변수를 선언합니다.
  2. javax.annotation.Resource 주석으로 변수를 분리하여 컨텍스트 정보가 변수에 삽입되고 있음을 나타냅니다.
  3. get MessageContext () 메서드를 사용하여 WebServiceContext 오브젝트에서 MessageContext 오브젝트를 가져옵니다.

    중요

    getMessageContext()@WebMethod 주석으로 데코레이팅되는 메서드에서만 사용할 수 있습니다.

예 42.2. “서비스 구현에서 컨텍스트 오브젝트 가져오기” 컨텍스트 오브젝트를 가져오기 위한 코드를 표시합니다.

예 42.2. 서비스 구현에서 컨텍스트 오브젝트 가져오기

import javax.xml.ws.*;
import javax.xml.ws.handler.*;
import javax.annotation.*;

@WebServiceProvider
public class WidgetServiceImpl
{
  @Resource
  WebServiceContext wsc;

  @WebMethod
  public String getColor(String itemNum)
  {
    MessageContext context = wsc.getMessageContext();
  }

  ...
}

42.2.3. 컨텍스트에서 속성 읽기

구현에 대한 MessageContext 오브젝트를 가져온 후에는 예 42.3. “MessageContext.get() 메서드” 에 표시된 get() 메서드를 사용하여 여기에 저장된 속성에 액세스할 수 있습니다.

예 42.3. MessageContext.get() 메서드

v오브젝트가져오기

참고

get() 는 Map 인터페이스에서 상속됩니다.

key 매개변수는 컨텍스트에서 검색할 속성을 나타내는 문자열입니다. get() 는 속성의 적절한 유형으로 캐스팅되어야 하는 오브젝트를 반환합니다. 표 42.1. “서비스 구현 컨텍스트에서 사용 가능한 속성” 서비스 구현의 컨텍스트에서 사용할 수 있는 여러 속성을 나열합니다.Lists a number of the properties that are available in a service implementation's context.

중요

컨텍스트에서 반환된 개체의 값을 변경하면 컨텍스트의 속성 값도 변경됩니다.

예 42.4. “서비스의 메시지 컨텍스트에서 속성 가져오기” 호출된 작업을 나타내는 WSDL 작업 요소의 이름을 가져오기 위한 코드를 표시합니다.

예 42.4. 서비스의 메시지 컨텍스트에서 속성 가져오기

import javax.xml.ws.handler.MessageContext;
import org.apache.cxf.message.Message;

  ...
  // MessageContext context retrieved in a previous example
  QName wsdl_operation = (QName)context.get(Message.WSDL_OPERATION);

42.2.4. 컨텍스트에서 속성 설정

구현에 대한 MessageContext 오브젝트를 가져온 후에는 예 42.5. “MessageContext.put() 메서드” 에 표시된 put() 메서드를 사용하여 속성을 설정하고 기존 속성을 변경할 수 있습니다.

예 42.5. MessageContext.put() 메서드

V키 VVClassCastExceptionIllegalArgumentExceptionNullPointerException

설정 중인 속성이 이미 메시지 컨텍스트에 존재하는 경우 put() 메서드는 기존 값을 새 값으로 교체하고 이전 값을 반환합니다. 속성이 메시지 컨텍스트에 존재하지 않는 경우 put() 메서드는 속성을 설정하고 null 을 반환합니다.

예 42.6. “서비스의 메시지 컨텍스트에서 속성 설정” HTTP 요청에 대한 응답 코드를 설정하는 코드를 표시합니다.

예 42.6. 서비스의 메시지 컨텍스트에서 속성 설정

import javax.xml.ws.handler.MessageContext;
import org.apache.cxf.message.Message;

  ...
  // MessageContext context retrieved in a previous example
  context.put(Message.RESPONSE_CODE, new Integer(404));

42.2.5. 지원되는 컨텍스트

표 42.1. “서비스 구현 컨텍스트에서 사용 가능한 속성” 서비스 구현 개체의 컨텍스트를 통해 액세스할 수 있는 속성을 나열합니다.Lists the properties accessible through the context in a service implementation object.

표 42.1. 서비스 구현 컨텍스트에서 사용 가능한 속성
속성 이름설명

org.apache.cxf.message.Message

PROTOCOL_HEADERS[a]

전송 특정 헤더 정보를 지정합니다. 값은 java.util.Map<String, List<String>> 로 저장됩니다.

RESPONSE_CODE

소비자에게 반환되는 응답 코드를 지정합니다. 값은 Integer 오브젝트로 저장됩니다.

ENDPOINT_ADDRESS

서비스 공급자의 주소를 지정합니다. 값은 문자열로 저장됩니다.

HTTP_REQUEST_METHOD

요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 저장됩니다.

PATH_INFO

요청된 리소스의 경로를 지정합니다. 값은 문자열로 저장됩니다.

경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URI가 http://cxf.apache.org/demo/widgets 인 경우 경로는 /demo/widgets 입니다.

QUERY_STRING

요청을 호출하는 데 사용되는 URI에 연결된 경우 쿼리를 지정합니다. 값은 문자열로 저장됩니다.

쿼리는 URI 끝에 표시됩니다. ?. 예를 들어 http://cxf.apache.org/demo/widgets?color 에 대한 요청이 있는 경우 쿼리는 색상 입니다.

MTOM_ENABLED

서비스 공급자가 MTOM을음음 첨부 파일에 사용할 수 있는지 여부를 지정합니다. 값은 부울 로 저장됩니다.

SCHEMA_VALIDATION_ENABLED

서비스 공급자가 스키마에 대한 메시지의 유효성을 검증할지 여부를 지정합니다. 값은 부울 로 저장됩니다.

FAULT_STACKTRACE_ENABLED

런타임에서 오류 메시지와 함께 스택 추적을 제공하는지 여부를 지정합니다. 값은 부울 로 저장됩니다.

CONTENT_TYPE

메시지의 MIME 형식을 지정합니다. 값은 문자열로 저장됩니다.

BASE_PATH

요청된 리소스의 경로를 지정합니다. 이 값은 java.net.URL 로 저장됩니다.

경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URL이 http://cxf.apache.org/demo/widgets 인 경우 기본 경로는 /demo/widgets 입니다.

인코딩

메시지의 인코딩을 지정합니다. 값은 문자열로 저장됩니다.

FIXED_PARAMETER_ORDER

매개 변수가 특정 순서로 메시지에 표시되어야 하는지 여부를 지정합니다. 값은 부울 로 저장됩니다.

MAINTAIN_SESSION

소비자가 향후 요청에 대해 현재 세션을 유지 관리하려는지 여부를 지정합니다. 값은 부울 로 저장됩니다.

WSDL_DESCRIPTION

구현 중인 서비스를 정의하는 WSDL 문서를 지정합니다. 이 값은 org.xml.sax.InputSource 오브젝트로 저장됩니다.

WSDL_SERVICE

구현 중인 서비스를 정의하는 wsdl:service 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_PORT

서비스에 액세스하는 데 사용되는 엔드포인트를 정의하는 wsdl:port 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_INTERFACE

구현 중인 서비스를 정의하는 wsdl:portType 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_OPERATION

소비자가 호출한 작업에 해당하는 wsdl:operation 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

javax.xml.ws.handler.MessageContext

MESSAGE_OUTBOUND_PROPERTY

메시지가 아웃바운드인지 여부를 지정합니다. 값은 부울 로 저장됩니다. true 는 메시지가 아웃바운드임을 나타냅니다.

INBOUND_MESSAGE_ATTACHMENTS

요청 메시지에 포함된 첨부 파일을 포함합니다. 값은 java.util.Map<String, DataHandler>로 저장됩니다.

맵의 키 값은 헤더의 MIME Content-ID입니다.

OUTBOUND_MESSAGE_ATTACHMENTS

응답 메시지에 대한 첨부 파일을 포함합니다. 값은 java.util.Map<String, DataHandler>로 저장됩니다.

맵의 키 값은 헤더의 MIME Content-ID입니다.

WSDL_DESCRIPTION

구현 중인 서비스를 정의하는 WSDL 문서를 지정합니다. 이 값은 org.xml.sax.InputSource 오브젝트로 저장됩니다.

WSDL_SERVICE

구현 중인 서비스를 정의하는 wsdl:service 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_PORT

서비스에 액세스하는 데 사용되는 엔드포인트를 정의하는 wsdl:port 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_INTERFACE

구현 중인 서비스를 정의하는 wsdl:portType 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

WSDL_OPERATION

소비자가 호출한 작업에 해당하는 wsdl:operation 요소의 정규화된 이름을 지정합니다. 값은 QName 으로 저장됩니다.

HTTP_RESPONSE_CODE

소비자에게 반환되는 응답 코드를 지정합니다. 값은 Integer 오브젝트로 저장됩니다.

HTTP_REQUEST_HEADERS

요청의 HTTP 헤더를 지정합니다. 값은 java.util.Map<String, List<String>> 로 저장됩니다.

HTTP_RESPONSE_HEADERS

응답의 HTTP 헤더를 지정합니다. 값은 java.util.Map<String, List<String>> 로 저장됩니다.

HTTP_REQUEST_METHOD

요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 저장됩니다.

SERVLET_REQUEST

서블릿의 request 오브젝트를 포함합니다. 값은 javax.servlet.http.HttpServletRequest 로 저장됩니다.

SERVLET_RESPONSE

서블릿의 응답 오브젝트를 포함합니다. 값은 javax.servlet.http.HttpResponse 로 저장됩니다.

SERVLET_CONTEXT

서블릿의 컨텍스트 오브젝트를 포함합니다. 값은 javax.servlet.ServletContext 로 저장됩니다.

PATH_INFO

요청된 리소스의 경로를 지정합니다. 값은 문자열로 저장됩니다.

경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URL이 http://cxf.apache.org/demo/widgets 인 경우 경로는 /demo/widgets 입니다.

QUERY_STRING

요청을 호출하는 데 사용되는 URI에 연결된 경우 쿼리를 지정합니다. 값은 문자열로 저장됩니다.

쿼리는 URI 끝에 표시됩니다. ?. 예를 들어 http://cxf.apache.org/demo/widgets?color 에 대한 요청이 있는 경우 쿼리 문자열은 색상 입니다.

REFERENCE_PARAMETERS

WS-Addressing 참조 매개변수를 지정합니다. 여기에는 wsa:IsReferenceParameter 속성이 true 로 설정된 모든 Cryostat 헤더가 포함됩니다. 값은 java.util.List 로 저장됩니다.

org.apache.cxf.transport.jms.JMSConstants

JMS_SERVER_HEADERS

JMS 메시지 헤더를 포함합니다. 자세한 내용은 42.4절. “JMS 메시지 속성 작업” 에서 참조하십시오.

[a] HTTP를 사용하는 경우 이 속성은 표준 Cryostat-WS 정의 속성과 동일합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.