2017-11-08 11 views
0

JAX-WS 서비스의 MTOM 개념을 이해하는 데 약간 혼란 스럽습니다. Image를 반환하는 메서드를 노출하는 webservice가 있습니다. 아래는 SIB 및 발행인 코드JAX-WS MTOM 또는 BindingType 주석

//@MTOM 
@WebService(endpointInterface= "com.test.clear.TestImageInterface") 
@BindingType(value = SOAPBinding.SOAP11HTTP_MTOM_BINDING) 
public class TestImageImpl implements TestImageInterface{ 


@WebMethod 
@Override 
// Create a named image from the raw bytes. 
public Image getImageByName(String name) { 

    Path path = Paths.get("..\..\..\"+name); 

try { 

    byte[ ] bytes = Files.readAllBytes(path); 
    ByteArrayInputStream in = new ByteArrayInputStream(bytes); 
    Iterator iterators = ImageIO.getImageReadersByFormatName("jpeg"); 
    ImageReader iterator = (ImageReader) iterators.next(); 
    ImageInputStream iis = ImageIO.createImageInputStream(in); 
    iterator.setInput(iis, true); 
    return iterator.read(0); 
} 
catch(IOException e) { 
    System.err.println(e); 
return null; 
} 
} 

} 

출판사 >>

Endpoint.publish("http://localhost:8080/TestWS/getImage", new TestImageImpl()); 

내가 가지고있는 혼란 @MTOM를 사용할 때 @BindingType 주석을 사용할시기를 이해하는 것입니다. 둘 중 하나를 사용하거나 두 가지를 함께 사용하면 게시자 클래스에서 게시 한 WSDL에 차이가 표시되지 않습니다. 다음은

<wsp:Policy wsu:Id="TestImageImplPortBinding_MTOM_Policy"> 
<ns1:OptimizedMimeSerialization xmlns:ns1="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" wsp:Optional="true"/> 

<binding name="TestImageImplPortBinding" type="tns:TestImageInterface"> 
<wsp:PolicyReference URI="#TestImageImplPortBinding_MTOM_Policy"/> 
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 

... 
... 
</definitions> 

또한 내가 SOAP 응답에 차이를 보이지 않는 서비스에서 가져온 생성 된 WSDL에게 있습니다. 예 : 내가
< XOP를 가지고 : 포함 HREF : CID />와

에서 첨부 파일을 가지고하는 것이 그 하나는 주석 중 하나를 사용할 수있는 서버 측에서 MTOM 수 있도록 의미합니까?

SOAPBinding binding = (SOAPBinding) endpoint.getBinding(); 
binding.setMTOMEnabled(true); 

을하지만 WSDL은 모든 MTOM 정책을 가지고 있지했다 생성 :

나는 아래와 같이 SIB에서 주석을 모두 제거한 후 게시자 측에서 프로그램 MTOM을 설정했습니다.

그래서 프로그래밍 방식으로 MTOM을 설정해야합니까?

MIME 형식 및 MTOM의 작동을 설명 할 수있는 사람이 있습니까?

미리 감사드립니다.

답변