MTOM with JAX-WS Services

    Message Transmission Optimization Mechanism (MTOM)——向或从 web services 高效地发送二进制数据的一种办法。

    要在 JAX-WS services 中使用 MTOM,首先,需要使用 BindingType 注解将 binding type 设置为 SOAP11 MTOM。参数和返回类型要用 javax.activation.DataHandler 来表示你的二进制数据。

    让我们看一个利用了MTOM的JAX-WS service。

@WebService(serviceName = "MTOMSampleService", targetNamespace = "http://mtom.jaxws.apache.org")
@BindingType(value = SOAPBinding.SOAP11HTTP_MTOM_BINDING)

public class MTOMService {

    @WebMethod(action = "urn:uploadFile")

    public String uploadFile(DataHandler data) {
    try {
      InputStream is = data.getInputStream();
      String msg = "File " + data.getName() + " of type " +              
data.getContentType() + " successfully received";
      return msg;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
  }

@WebMethod(action = "urn:getTestData")
  public DataHandler getBinaryTestData(String stmtId) {
    byte[] testData = new byte[10240];
    for (int i = 0; i < testData.length; i++) {
      testData[i] = 0x7f;
    }
    ByteArrayDataSource bds =
      new ByteArrayDataSource(testData, "application/octet-stream");
    return new DataHandler(bds);
  }
}

Java bean type classes can also contain DataHandlers.

猜你喜欢

转载自zsjg13.iteye.com/blog/2245632