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 />와
SOAPBinding binding = (SOAPBinding) endpoint.getBinding();
binding.setMTOMEnabled(true);
을하지만 WSDL은 모든 MTOM 정책을 가지고 있지했다 생성 :
나는 아래와 같이 SIB에서 주석을 모두 제거한 후 게시자 측에서 프로그램 MTOM을 설정했습니다.그래서 프로그래밍 방식으로 MTOM을 설정해야합니까?
MIME 형식 및 MTOM의 작동을 설명 할 수있는 사람이 있습니까?
미리 감사드립니다.
공급자 인터페이스를 구현하는 WS에서 MTOM을 활성화 할 수없는 이유는 무엇입니까? – summary