spring-ws 使用mtom传输附件
来源:互联网 发布:ibm人工智能沃森 编辑:程序博客网 时间:2024/05/22 21:49
发送方代码:
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();//使用自定义marshaller进行xml转换以支持mtom协议
marshaller.setClassesToBeBound(new Class[] { addTaskRequest.class, addTaskResponse.class });
marshaller.setMtomEnabled(true);//开启mtom
WebServiceTemplate mtomClient=new WebServiceTemplate(marshaller);
mtomClient.setDefaultUri(uri);
Wss4jSecurityInterceptor wss4jInterceptor = new Wss4jSecurityInterceptor();
wss4jInterceptor.setSecurementActions(“UsernameToken”);
wss4jInterceptor.setSecurementUsername(taskServiceSend.userName);
wss4jInterceptor.setSecurementPassword(taskServiceSend.password);
wss4jInterceptor.setSecurementPasswordType(“PasswordDigest”);
mtomClient.setInterceptors(new ClientInterceptor[] {wss4jInterceptor});
addTaskResponse response = mtomClient.sendAndReceive(new WebServiceMessageCallback() {
public void doWithMessage(WebServiceMessage requestMessage) throws IOException, TransformerException {
MarshallingUtils.marshal(marshaller, request, requestMessage);//使用自定义marshaller将request bean转换成soap xml消息以支持mtom
//DOMReader reader=new DOMReader();
//Document document=reader.read(((SaajSoapMessage)requestMessage).getDocument());
//System.out.println(message.convertToXopPackage()+”\n”+message.isXopPackage()+”\n”+message.getAttachments().next().getContentId());
//System.out.println(document.asXML());
}
}, new WebServiceMessageExtractor() {
public addTaskResponse extractData(WebServiceMessage response) throws IOException {
return (addTaskResponse) MarshallingUtils.unmarshal(marshaller, response);//使用自定义marshaller将返回消息转换成response bean以支持mtom
}
});
接收方:
public class taskEndpoint extends AbstractHibernateDao implements IWebservice {
public final static String namespace = “OAToTask”;
@PayloadRoot(localPart = "addTaskRequest", namespace = taskEndpoint.namespace)@DataResolver@Transactional//接收MessageContext类型的request以便使用自定义marshaller对将消息转换成request bean,才能支持mtompublic @ResponsePayload void startTask(@RequestPayload MessageContext messageContext) throws Exception {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();//使用自定义marshaller进行xml转换以支持mtom协议
marshaller.setClassesToBeBound(new Class[] { addTaskRequest.class, addTaskResponse.class, });
marshaller.setMtomEnabled(true);//开启mtom
addTaskRequest request= (addTaskRequest) MarshallingUtils.unmarshal(marshaller, messageContext.getRequest());//使用自定义marshaller将soap xml消息转换成request bean以支持mtom
//处理request bean中的请求
addTaskResponse response = new addTaskResponse();
DefaultStrategiesHelper strategiesHelper = new DefaultStrategiesHelper(WebServiceTemplate.class);
WebServiceMessageFactory messageFactory = (WebServiceMessageFactory)strategiesHelper.getDefaultStrategy(WebServiceMessageFactory.class);
SaajSoapMessage message=(SaajSoapMessage) messageFactory.createWebServiceMessage();
MarshallingUtils.marshal(marshaller, response, message);//使用自定义marshaller将response bean转化成soap xml消息,以支持mtom
messageContext.setResponse(message);//将response消息传给messageContext返回接收方
}
}
xsd及bean:
xsd中,schema添加 xmlns:xmime=”http://www.w3.org/2005/05/xmlmime”
并将附件设成
bean中使用 javax.activation.DataHandler;与之对应如:DataHandler dataHandler=new DataHandler(new FileDataSource(filePath));
f.setFileData(dataHandler);
- spring-ws 使用mtom传输附件
- 使用MTOM传输附件+WS-Security
- 使用Axis2传输附件(AXIS2 MTOM)
- 使用Axis2传输附件(AXIS2 MTOM)
- 使用CXF和MTOM上传附件
- webservices使用MTOM附件抛出的内存溢出
- 【JAX-WS入门系列】第06章_使用MTOM处理二进制文件
- spring-ws的使用
- WebService CXF --- 传输文件MTOM
- 化零为整WCF(7) - 消息处理(使用消息传输优化机制 - MTOM)
- 化零为整WCF(7) - 消息处理(使用消息传输优化机制 - MTOM)
- 使用spring-ws开发webservice
- 使用spring-ws开发webservice
- java.lang.NoClassDefFoundError: java/xml/ws/soap/MTOM
- JAX-WS - 二进制处理之MTOM(文件上传)
- 在 Windows Mobile 使用 WS-Attachment 传输二进制数据
- 在 Windows Mobile 使用 WS-Attachment 传输二进制数据
- 在websphere上使用spring-ws
- Java并发编程:volatile关键字解析
- hadoop环境安装
- 学习笔记-Redis系统集成
- 关联分析:FP-Growth算法
- 树莓派GPIO高级控制方法
- spring-ws 使用mtom传输附件
- python的版本管理
- java集合
- SQL语句模糊查询
- python基础数据类型一
- websocket 入门系列:三 netty实现简单聊天
- ztree+Ajxa 动态树形图实例展示
- nginx信号量
- 【代码全】使用SpringAOP编写日志记录(插入oracle数据库中)