42.2. 서비스 구현에서 컨텍스트 작업
42.2.1. 개요
컨텍스트 정보는 WebServiceContext 인터페이스를 사용하여 서비스 구현에 제공됩니다. WebServiceContext 개체에서 애플리케이션 범위에서 현재 요청의 컨텍스트 속성으로 채워진 MessageContext
개체를 가져올 수 있습니다. 속성 값을 조작할 수 있으며 응답 체인을 통해 다시 전파됩니다.
MessageContext 인터페이스는 java.util.Map 인터페이스에서 상속됩니다. 해당 내용은 Map 인터페이스의 방법을 사용하여 조작할 수 있습니다.
42.2.2. 컨텍스트 가져오기
서비스 구현에서 메시지 컨텍스트를 가져오려면 다음을 수행합니다.
예 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
키 V키
V
값
ClassCastExceptionIllegalArgumentExceptionNullPointerException
설정 중인 속성이 이미 메시지 컨텍스트에 존재하는 경우 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.
속성 이름 | 설명 |
---|---|
| |
PROTOCOL_HEADERS[a] |
전송 특정 헤더 정보를 지정합니다. 값은 |
RESPONSE_CODE |
소비자에게 반환되는 응답 코드를 지정합니다. 값은 |
ENDPOINT_ADDRESS |
서비스 공급자의 주소를 지정합니다. 값은 문자열로 |
HTTP_REQUEST_METHOD |
요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 |
PATH_INFO |
요청된 리소스의 경로를 지정합니다. 값은 문자열로
경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URI가 http://cxf.apache.org/demo/widgets 인 경우 경로는 |
QUERY_STRING |
요청을 호출하는 데 사용되는 URI에 연결된 경우 쿼리를 지정합니다. 값은 문자열로
쿼리는 URI 끝에 표시됩니다. |
MTOM_ENABLED |
서비스 공급자가 MTOM을음음 첨부 파일에 사용할 수 있는지 여부를 지정합니다. 값은 |
SCHEMA_VALIDATION_ENABLED |
서비스 공급자가 스키마에 대한 메시지의 유효성을 검증할지 여부를 지정합니다. 값은 |
FAULT_STACKTRACE_ENABLED |
런타임에서 오류 메시지와 함께 스택 추적을 제공하는지 여부를 지정합니다. 값은 |
CONTENT_TYPE |
메시지의 MIME 형식을 지정합니다. 값은 문자열로 |
BASE_PATH |
요청된 리소스의 경로를 지정합니다. 이 값은
경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URL이 http://cxf.apache.org/demo/widgets 인 경우 기본 경로는 |
인코딩 |
메시지의 인코딩을 지정합니다. 값은 문자열로 |
FIXED_PARAMETER_ORDER |
매개 변수가 특정 순서로 메시지에 표시되어야 하는지 여부를 지정합니다. 값은 |
MAINTAIN_SESSION |
소비자가 향후 요청에 대해 현재 세션을 유지 관리하려는지 여부를 지정합니다. 값은 |
WSDL_DESCRIPTION |
구현 중인 서비스를 정의하는 WSDL 문서를 지정합니다. 이 값은 |
WSDL_SERVICE |
구현 중인 서비스를 정의하는 |
WSDL_PORT |
서비스에 액세스하는 데 사용되는 엔드포인트를 정의하는 |
WSDL_INTERFACE |
구현 중인 서비스를 정의하는 |
WSDL_OPERATION |
소비자가 호출한 작업에 해당하는 |
| |
MESSAGE_OUTBOUND_PROPERTY |
메시지가 아웃바운드인지 여부를 지정합니다. 값은 |
INBOUND_MESSAGE_ATTACHMENTS |
요청 메시지에 포함된 첨부 파일을 포함합니다. 값은 맵의 키 값은 헤더의 MIME Content-ID입니다. |
OUTBOUND_MESSAGE_ATTACHMENTS |
응답 메시지에 대한 첨부 파일을 포함합니다. 값은 맵의 키 값은 헤더의 MIME Content-ID입니다. |
WSDL_DESCRIPTION |
구현 중인 서비스를 정의하는 WSDL 문서를 지정합니다. 이 값은 |
WSDL_SERVICE |
구현 중인 서비스를 정의하는 |
WSDL_PORT |
서비스에 액세스하는 데 사용되는 엔드포인트를 정의하는 |
WSDL_INTERFACE |
구현 중인 서비스를 정의하는 |
WSDL_OPERATION |
소비자가 호출한 작업에 해당하는 |
HTTP_RESPONSE_CODE |
소비자에게 반환되는 응답 코드를 지정합니다. 값은 |
HTTP_REQUEST_HEADERS |
요청의 HTTP 헤더를 지정합니다. 값은 |
HTTP_RESPONSE_HEADERS |
응답의 HTTP 헤더를 지정합니다. 값은 |
HTTP_REQUEST_METHOD |
요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 |
SERVLET_REQUEST |
서블릿의 request 오브젝트를 포함합니다. 값은 |
SERVLET_RESPONSE |
서블릿의 응답 오브젝트를 포함합니다. 값은 |
SERVLET_CONTEXT |
서블릿의 컨텍스트 오브젝트를 포함합니다. 값은 |
PATH_INFO |
요청된 리소스의 경로를 지정합니다. 값은 문자열로
경로는 호스트 이름 뒤와 쿼리 문자열 앞에 있는 URI의 일부입니다. 예를 들어 끝점의 URL이 http://cxf.apache.org/demo/widgets 인 경우 경로는 |
QUERY_STRING |
요청을 호출하는 데 사용되는 URI에 연결된 경우 쿼리를 지정합니다. 값은 문자열로
쿼리는 URI 끝에 표시됩니다. |
REFERENCE_PARAMETERS |
WS-Addressing 참조 매개변수를 지정합니다. 여기에는 |
| |
JMS_SERVER_HEADERS | JMS 메시지 헤더를 포함합니다. 자세한 내용은 42.4절. “JMS 메시지 속성 작업” 에서 참조하십시오. |
[a]
HTTP를 사용하는 경우 이 속성은 표준 Cryostat-WS 정의 속성과 동일합니다.
|