21.3. WS-RM 활성화


21.3.1. 개요

안정적인 메시징을 사용하려면 인바운드 및 아웃바운드 메시지 및 결함 모두에 대해 WS-RM 인터셉터를 인터셉터 체인에 추가해야 합니다. WS-RM 인터셉터는 WS-Addressing을 사용하므로 WS-Addressing 인터셉터도 인터셉터 체인에 있어야 합니다.

다음 두 가지 방법 중 하나로 이러한 인터셉터가 있는지 확인할 수 있습니다.

  • 명시적으로, Spring 빈을 사용하여 디스패치 체인에 추가
  • Apache CXF 런타임이 사용자를 대신하여 인터셉터를 투명하게 추가하도록 하는 WS-Policy 어설션을 사용하여 암시적으로 되게 합니다.

21.3.2. Spring 빈: 명시적으로 인터셉터 추가

WS-RM을 활성화하려면 Apache CXF 버스에 WS-RM 및 WS-Addressing 인터셉터를 추가하거나 Spring Ignition 구성을 사용하여 소비자 또는 서비스 끝점에 추가합니다. 이 방법은 InstallDir/samples/ws_rm 디렉터리에 있는 WS-RM 샘플에서 가져온 방법입니다. 구성 파일 ws-rm.cxf 는 Spring 빈으로 하나씩 추가되는 WS-RM 및 WS-Addressing 인터셉터를 보여줍니다( 예 21.1. “Spring Cryostat를 사용하여 WS-RM 활성화”참조).

예 21.1. Spring Cryostat를 사용하여 WS-RM 활성화

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/
   beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
   <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
   <bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
        <property name="bus" ref="cxf"/>
   </bean>
   <bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
        <property name="bus" ref="cxf"/>
   </bean>
   <bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
   <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
        <property name="inInterceptors">
            <list>
                <ref bean="mapAggregator"/>
                <ref bean="mapCodec"/>
                <ref bean="rmLogicalIn"/>
                <ref bean="rmCodec"/>
            </list>
        </property>
        <property name="inFaultInterceptors">
            <list>
                <ref bean="mapAggregator"/>
                <ref bean="mapCodec"/>
                <ref bean="rmLogicalIn"/>
                <ref bean="rmCodec"/>
            </list>
        </property>
        <property name="outInterceptors">
            <list>
                <ref bean="mapAggregator"/>
                <ref bean="mapCodec"/>
                <ref bean="rmLogicalOut"/>
                <ref bean="rmCodec"/>
            </list>
        </property>
        <property name="outFaultInterceptors">
            <list>
                <ref bean="mapAggregator">
                <ref bean="mapCodec"/>
                <ref bean="rmLogicalOut"/>
                <ref bean="rmCodec"/>
            </list>
        </property>
    </bean>
</beans>

예 21.1. “Spring Cryostat를 사용하여 WS-RM 활성화” 에 표시된 코드는 다음과 같이 설명할 수 있습니다.

Apache CXF 구성 파일은 Spring XML 파일입니다. 요소에 의해 캡슐화된 하위 요소의 네임스페이스 및 스키마 파일을 선언하는 열기 Spring 요소를 포함해야 합니다.

각 WS-Addressing interceptors-MAPAggregatorMAPCodec 를 구성합니다. WS-Addressing에 대한 자세한 내용은 20장. WS-Addressing 배포 을 참조하십시오.

각 WS-RM 인터셉터(RMOutInterceptor,RMInInterceptor, RMSoapInterceptor )를 구성합니다.

인바운드 메시지의 인터셉터 체인에 WS-Addressing 및 WS-RM 인터셉터를 추가합니다.

인바운드 오류의 인터셉터 체인에 WS-Addressing 및 WS-RM 인터셉터를 추가합니다.

아웃바운드 메시지의 인터셉터 체인에 WS-Addressing 및 WS-RM 인터셉터를 추가합니다.

WS-Addressing 및 WS-RM 인터셉터를 아웃바운드 결함의 인터셉터 체인에 추가합니다.

21.3.3. WS-Policy 프레임워크: 암시적으로 인터셉터 추가

WS-Policy 프레임워크는 WS-Policy를 사용할 수 있는 인프라 및 API를 제공합니다. 2006년 11월 Web Services Policy 1.5-FrameworkWeb Services Policy 1.5-Attachment 사양을 준수합니다.

Apache CXF WS-Policy 프레임워크를 사용하여 WS-RM을 활성화하려면 다음을 수행합니다.

  1. 클라이언트 및 서버 끝점에 정책 기능을 추가합니다. 예 21.2. “WS-Policy를 사용하여 WS-RM 구성” jaxws:feature 요소 내에 중첩된 참조 8080을 표시합니다. 참조 8080은 동일한 구성 파일 내에서 별도의 요소로 정의되는 AddressingPolicy 를 지정합니다.

    예 21.2. WS-Policy를 사용하여 WS-RM 구성

    <jaxws:client>
        <jaxws:features>
          <ref bean="AddressingPolicy"/>
        </jaxws:features>
    </jaxws:client>
    <wsp:Policy wsu:Id="AddressingPolicy" xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
        <wsam:Addressing>
          <wsp:Policy>
            <wsam:NonAnonymousResponses/>
          </wsp:Policy>
        </wsam:Addressing>
    </wsp:Policy>
  2. 예 21.3. “WSDL 파일에 RM 정책 추가” 에 표시된 대로 신뢰할 수 있는 메시징 정책을 wsdl:service 요소 또는 정책 참조 요소의 연결 지점으로 사용할 수 있는 기타 WSDL 요소를 추가합니다.

    예 21.3. WSDL 파일에 RM 정책 추가

    <wsp:Policy wsu:Id="RM"
       xmlns:wsp="http://www.w3.org/2006/07/ws-policy"
       xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
            <wsp:Policy/>
        </wsam:Addressing>
        <wsrmp:RMAssertion xmlns:wsrmp="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
            <wsrmp:BaseRetransmissionInterval Milliseconds="10000"/>
        </wsrmp:RMAssertion>
    </wsp:Policy>
    ...
    <wsdl:service name="ReliableGreeterService">
        <wsdl:port binding="tns:GreeterSOAPBinding" name="GreeterPort">
            <soap:address location="http://localhost:9020/SoapContext/GreeterPort"/>
            <wsp:PolicyReference URI="#RM" xmlns:wsp="http://www.w3.org/2006/07/ws-policy"/>
        </wsdl:port>
    </wsdl:service>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.