9.3. MTOM 활성화
기본적으로 Apache CXF 런타임은 MTOM 지원을 활성화하지 않습니다. 모든 바이너리 데이터를 일반 SOAP 메시지의 일부로 전송하거나 최적화되지 않은 첨부 파일로 보냅니다. 프로그래밍 방식으로 또는 구성을 통해 MTOM 지원을 활성화할 수 있습니다.
9.3.1. JAX-WS API 사용
9.3.1.1. 개요
서비스 공급자와 소비자 모두 MTOM 최적화를 활성화해야 합니다. JAX-WS API는 각 엔드포인트 유형에 대해 서로 다른 메커니즘을 제공합니다.
9.3.1.2. 서비스 공급자
JAX-WS API를 사용하여 서비스 공급자를 게시한 경우 다음과 같이 런타임의 MTOM 지원을 활성화합니다.
게시된 서비스의
Endpoint
오브젝트에 액세스합니다.Endpoint
오브젝트에 액세스하는 가장 쉬운 방법은 끝점을 게시하는 것입니다. 자세한 내용은 31장. 서비스 게시 에서 참조하십시오.예 9.4. “끝점에서 SOAP 바인딩 가져오기” 과 같이
getBinding()
메서드를 사용하여 끝점에서 SOAP 바인딩을 가져옵니다.예 9.4. 끝점에서 SOAP 바인딩 가져오기
// Endpoint ep is declared previously SOAPBinding binding = (SOAPBinding)ep.getBinding();
반환된 바인딩 개체를 MTOM 속성에 액세스하려면
SOAPBinding
개체에 캐스팅해야 합니다.바인딩의 MTOM enabled 속성을 예 9.5. “서비스 공급자의 MTOM 사용 속성 설정” 와 같이
setMTOMEnabled()
메서드를 사용하여true
로 설정합니다.예 9.5. 서비스 공급자의 MTOM 사용 속성 설정
binding.setMTOMEnabled(true);
9.3.1.3. 소비자
MTOM으로 JAX-WS 소비자를 활성화하려면 다음을 수행해야 합니다.
소비자의 프록시를
BindingProvider
개체로 캐스팅합니다.소비자 프록시를 가져오는 방법에 대한 자세한 내용은 25장. WSDL 계약 없이 소비자 개발 또는 28장. WSDL 계약에서 소비자 개발 을 참조하십시오.
예 9.6. “
BindingProvider
에서 SOAP 바인딩 가져오기” 과 같이getBinding()
메서드를 사용하여BindingProvider
에서 SOAP 바인딩을 가져옵니다.예 9.6.
BindingProvider
에서 SOAP 바인딩 가져오기// BindingProvider bp declared previously SOAPBinding binding = (SOAPBinding)bp.getBinding();
바인딩의
setMTOMEnabled()
메서드를 사용하여 예 9.7. “소비자의 MTOM 사용 속성 설정” 에 표시된 대로 MTOM enabled 속성을true
로 설정합니다.예 9.7. 소비자의 MTOM 사용 속성 설정
binding.setMTOMEnabled(true);
9.3.2. 구성 사용
9.3.2.1. 개요
컨테이너에 배포할 때와 같이 XML을 사용하여 서비스를 게시하는 경우 엔드포인트 구성 파일에서 끝점의 MTOM 지원을 활성화할 수 있습니다. 엔드 포인트 구성에 대한 자세한 내용은 IV 부. 웹 서비스 엔드 포인트 구성 을 참조하십시오.
9.3.2.2. 절차
MTOM 속성은 엔드포인트의 jaxws:endpoint
요소 내에 설정됩니다. MTOM을 활성화하려면 다음을 수행합니다.
-
jaxws:property
하위 요소를 엔드포인트의jaxws:endpoint
요소에 추가합니다. -
jaxws:property
요소에항목
하위 요소를 추가합니다. -
entry
요소의key
속성을mtom-enabled
로 설정합니다. -
entry
요소의value
속성을true
로 설정합니다.
9.3.2.3. 예제
예 9.8. “MTOM 활성화를 위한 구성” MTOM이 활성화된 끝점을 보여줍니다.
예 9.8. MTOM 활성화를 위한 구성
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"> <jaxws:endpoint id="xRayStorage" implementor="demo.spring.xRayStorImpl" address="http://localhost/xRayStorage"> <jaxws:properties> <entry key="mtom-enabled" value="true"/> </jaxws:properties> </jaxws:endpoint> </beans>