42.2. 서비스 구현에서 컨텍스트 작업
42.2.1. 개요
컨텍스트 정보는 WebServiceContext 인터페이스를 사용하여 서비스 구현에 사용 가능하게 됩니다. WebServiceContext 개체에서 현재 요청의 컨텍스트 속성으로 채워지는 MessageContext
개체를 애플리케이션 범위에서 가져올 수 있습니다.From the WebServiceContext object you can obtain a MessageContext object that is populated with the current request's context properties in the application scope. 속성 값을 조작할 수 있으며 응답 체인을 통해 다시 전파됩니다.
MessageContext 인터페이스는 java.util.Map 인터페이스에서 상속됩니다. 해당 콘텐츠는 맵 인터페이스의 메서드를 사용하여 조작할 수 있습니다.
42.2.2. 컨텍스트 가져오기
서비스 구현에서 메시지 컨텍스트를 얻으려면 다음을 수행합니다.
예 42.2. “서비스 구현에서 컨텍스트 오브젝트 가져오기” context 개체를 가져오기 위한 코드를 표시합니다.
예 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. 컨텍스트에서 속성을 읽습니다.Read a property from a context.
구현을 위한 MessageContext 개체를 얻은 후에는 예 42.3. “MessageContext.get()
메서드” 에 표시된 get()
메서드를 사용하여 여기에 저장된 속성에 액세스할 수 있습니다.
예 42.3. MessageContext.get()
메서드
vget
Object
키
이 get()
은 맵 인터페이스에서 상속됩니다.
key
매개변수는 컨텍스트에서 검색할 속성을 나타내는 문자열입니다. get()
는 속성에 대한 적절한 유형으로 캐스팅되어야 하는 개체를 반환합니다. 표 42.1. “서비스 구현 컨텍스트에서 사용 가능한 속성” 서비스 구현의 컨텍스트에서 사용할 수 있는 여러 속성을 나열합니다.Lists a number of the properties that are available in a service implementation's context.
컨텍스트에서 반환된 개체의 값을 변경하면 컨텍스트의 속성 값도 변경됩니다.Changing the values of the object returned from the context also changes the value of the property in the 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
put
K
key
V
value
ClassCastExceptionIllegalArgumentException
설정 중인 속성이 메시지 컨텍스트에 이미 존재하는 경우 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 |
사용자에게 반환되는 응답 코드를 지정합니다.Specifies the response code returned to the consumer. 값은 |
ENDPOINT_ADDRESS |
서비스 공급자의 주소를 지정합니다. 값은 문자열로 저장 |
HTTP_REQUEST_METHOD |
요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 저장 |
PATH_INFO |
요청 중인 리소스의 경로를 지정합니다. 값은 문자열로 저장
경로는 hostname 뒤 및 쿼리 문자열 앞에 있는 URI의 부분입니다. 예를 들어 엔드포인트 URI가 http://cxf.apache.org/demo/widgets 인 경우 경로는 |
QUERY_STRING |
요청을 호출하는 데 사용되는 URI에 연결된 쿼리(있는 경우)를 지정합니다. 값은 문자열로 저장
쿼리는 URI의 끝에 표시됩니까 |
MTOM_ENABLED |
SOAP 첨부에 대해 서비스 공급자가 MTOM을 사용할 수 있는지 여부를 지정합니다. 값은 |
SCHEMA_VALIDATION_ENABLED |
서비스 공급자가 스키마에 대한 메시지의 유효성을 검사할지 여부를 지정합니다.Specifies whether the service provider validates messages against a schema. 값은 |
FAULT_STACKTRACE_ENABLED |
런타임에서 스택 추적을 오류 메시지와 함께 제공하는지를 지정합니다. 값은 |
CONTENT_TYPE |
메시지의 MIME 형식을 지정합니다. 값은 문자열로 저장 |
BASE_PATH |
요청 중인 리소스의 경로를 지정합니다. 이 값은
경로는 hostname 뒤 및 쿼리 문자열 앞에 있는 URI의 부분입니다. 예를 들어 끝점 URL이 http://cxf.apache.org/demo/widgets 인 경우 기본 경로는 |
ENCODING |
메시지의 인코딩을 지정합니다. 값은 문자열로 저장 |
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 |
사용자에게 반환되는 응답 코드를 지정합니다.Specifies the response code returned to the consumer. 값은 |
HTTP_REQUEST_HEADERS |
요청에서 HTTP 헤더를 지정합니다. 값은 |
HTTP_RESPONSE_HEADERS |
응답에 대한 HTTP 헤더를 지정합니다. 값은 |
HTTP_REQUEST_METHOD |
요청과 함께 전송된 HTTP 동사를 지정합니다. 값은 문자열로 저장 |
SERVLET_REQUEST |
서블릿의 요청 오브젝트를 포함합니다. 이 값은 |
SERVLET_RESPONSE |
서블릿의 response 오브젝트를 포함합니다. 이 값은 |
SERVLET_CONTEXT |
서블릿의 context 오브젝트를 포함합니다. 이 값은 |
PATH_INFO |
요청 중인 리소스의 경로를 지정합니다. 값은 문자열로 저장
경로는 hostname 뒤 및 쿼리 문자열 앞에 있는 URI의 부분입니다. 예를 들어 엔드포인트 URL이 http://cxf.apache.org/demo/widgets 인 경우 경로는 |
QUERY_STRING |
요청을 호출하는 데 사용되는 URI에 연결된 쿼리(있는 경우)를 지정합니다. 값은 문자열로 저장
쿼리는 URI의 끝에 표시됩니까 |
REFERENCE_PARAMETERS |
WS-Addressing 참조 매개 변수를 지정합니다. 여기에는 |
| |
JMS_SERVER_HEADERS | JMS 메시지 헤더를 포함합니다. 자세한 내용은 42.4절. “JMS Message Properties 사용” 에서 참조하십시오. |
[a]
HTTP를 사용하는 경우 이 속성은 표준 JAX-WS 정의 속성과 동일합니다.
|