검색

42.3. 소비자 구현에서 컨텍스트 작업

download PDF

42.3.1. 개요

소비자 구현은 BindingProvider 인터페이스를 통해 컨텍스트 정보에 액세스할 수 있습니다. BindingProvider 인스턴스는 두 개의 개별 컨텍스트에 컨텍스트 정보를 보유합니다.

  • 요청 컨텍스트 요청 컨텍스트 를 사용하면 아웃바운드 메시지에 영향을 주는 속성을 설정할 수 있습니다. 요청 컨텍스트 속성은 특정 포트 인스턴스에 적용되며, 설정된 경우 속성과 같은 시간이 명시적으로 지워질 때까지 포트에서 수행된 모든 후속 작업 호출에 영향을 미칩니다. 예를 들어 요청 컨텍스트 속성을 사용하여 연결 시간 초과를 설정하거나 헤더에서 전송할 데이터를 초기화할 수 있습니다.
  • 응답 컨텍스트 응답 컨텍스트 를 사용하면 현재 스레드에서 수행된 마지막 작업 호출에 대한 응답으로 설정된 속성 값을 읽을 수 있습니다. 응답 컨텍스트 속성은 모든 작업 호출 후 재설정됩니다. 예를 들어 응답 컨텍스트 속성에 액세스하여 마지막 인바운드 메시지에서 수신된 헤더 정보를 읽을 수 있습니다.
중요

메시지 컨텍스트의 애플리케이션 범위에 배치된 정보만 소비자 구현에서 액세스할 수 있습니다.

42.3.2. 컨텍스트 가져오기

컨텍스트는 javax.xml.ws.BindingProvider 인터페이스를 사용하여 가져옵니다. BindingProvider 인터페이스에는 컨텍스트를 가져오기 위한 두 가지 메서드가 있습니다.

  • getRequestContext() 예 42.7. “getRequestContext() 메서드” 에 표시된 getRequestContext() 메서드는 요청 컨텍스트를 Map 오브젝트로 반환합니다. 반환된 Map 오브젝트를 사용하여 컨텍스트의 콘텐츠를 직접 조작할 수 있습니다.

    예 42.7. getRequestContext() 메서드

    Map<String, Object>getRequestContext

  • getResponseContext() 예 42.8. “getResponseContext() 메서드” 에 표시된 getResponseContext() 는 응답 컨텍스트를 Map 오브젝트로 반환합니다. 반환된 Map 오브젝트의 콘텐츠는 현재 스레드에서 만든 원격 서비스에 대한 가장 최근의 요청에 대한 응답 컨텍스트 내용의 상태를 반영합니다.

    예 42.8. getResponseContext() 메서드

    Map<String, Object>getResponseContext

프록시 개체는 BindingProvider 인터페이스를 구현하므로 프록시 개체를 캐스팅하여 BindingProvider 개체를 가져올 수 있습니다.Because proxy objects implement the BindingProvider interface, a BindingProvider object can be obtained by casting a proxy object. BindingProvider 개체에서 가져온 컨텍스트는 이를 생성하는 데 사용되는 프록시 오브젝트에서 호출된 작업에만 유효합니다.

예 42.9. “소비자의 요청 컨텍스트 가져오기” 프록시에 대한 요청 컨텍스트를 가져오는 코드를 표시합니다.

예 42.9. 소비자의 요청 컨텍스트 가져오기

// Proxy widgetProxy obtained previously
BindingProvider bp = (BindingProvider)widgetProxy;
Map<String, Object> requestContext = bp.getRequestContext();

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

소비자 컨텍스트는 java.util.Map<String, Object> 오브젝트에 저장됩니다. 맵에는 임의의 개체가 포함된 String 개체 및 값인 키가 있습니다. java.util.Map.get() 을 사용하여 응답 컨텍스트 속성 맵의 항목에 액세스합니다.

특정 컨텍스트 속성인 ContextPropertyName 을 검색하려면 예 42.10. “응답 컨텍스트 속성 읽기” 에 표시된 코드를 사용합니다.

예 42.10. 응답 컨텍스트 속성 읽기

// Invoke an operation.
port.SomeOperation();

// Read response context property.
java.util.Map<String, Object> responseContext =
  ((javax.xml.ws.BindingProvider)port).getResponseContext();
PropertyType propValue = (PropertyType) responseContext.get(ContextPropertyName);

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

소비자 컨텍스트는 java.util.Map<String, Object> 개체에 저장된 해시 맵 입니다. 맵에는 임의의 오브젝트인 String 개체 및 값인 키가 있습니다. 컨텍스트에서 속성을 설정하려면 java.util.Map.put() 메서드를 사용합니다.

요청 컨텍스트와 응답 컨텍스트에서 속성을 설정할 수 있지만 요청 컨텍스트에 대한 변경 사항만 메시지 처리에 영향을 미칩니다. 응답 컨텍스트의 속성은 현재 스레드에서 각 원격 호출이 완료되면 재설정됩니다.

예 42.11. “요청 컨텍스트 속성 설정” 에 표시된 코드는 BindingProvider.ENDPOINT_ADDRESS_PROPERTY 값을 설정하여 대상 서비스 공급자의 주소를 변경합니다.

예 42.11. 요청 컨텍스트 속성 설정

// Set request context property.
java.util.Map<String, Object> requestContext =
     ((javax.xml.ws.BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/widgets");

// Invoke an operation.
port.SomeOperation();
중요

속성 값이 요청 컨텍스트에서 설정되면 모든 후속 원격 호출에 사용됩니다.Once a property is set in the request context its value is used for all subsequent remote invocations. 값을 변경할 수 있으며 변경된 값이 사용됩니다.

42.3.5. 지원되는 컨텍스트

Apache CXF는 소비자 구현에서 다음과 같은 컨텍스트 속성을 지원합니다.

표 42.2. 소비자 컨텍스트 속성
속성 이름설명

javax.xml.ws.BindingProvider

ENDPOINT_ADDRESS_PROPERTY

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

USERNAME_PROPERTY[a]

HTTP 기본 인증에 사용되는 사용자 이름을 지정합니다. 값은 문자열로 저장됩니다.

PASSWORD_PROPERTY[b]

HTTP 기본 인증에 사용되는 암호를 지정합니다. 값은 문자열로 저장됩니다.

SESSION_MAINTAIN_PROPERTY[c]

클라이언트가 세션 정보를 유지 관리하려는지 여부를 지정합니다. 값은 부울 오브젝트로 저장됩니다.

org.apache.cxf.ws.addressing.JAXWSAConstants

CLIENT_ADDRESSING_PROPERTIES

소비자가 원하는 서비스 공급자에 연결하는 데 사용하는 WS-Addressing 정보를 지정합니다. 이 값은 org.apache.cxf.ws.addressing.AddressingProperties 로 저장됩니다.

org.apache.cxf.transports.jms.context.JMSConstants

JMS_CLIENT_REQUEST_HEADERS

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

[a] 이 속성은 HTTP 보안 설정에 정의된 사용자 이름으로 재정의됩니다.
[b] 이 속성은 HTTP 보안 설정에 정의된 암호로 재정의됩니다.
[c] Apache CXF는 이 속성을 무시합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.