基本信息
源码名称:CXF webservice 上传以及下载文件
源码大小:13.32M
文件格式:.zip
开发语言:Java
更新时间:2015-12-07
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
CXF是支持对附件上传的协议MTOM。
MTOM(SOAP Message Transmission Optimization Mechanism)SOAP 消息传输优化机制,可以在SOAP 消息中发送二进制数据,与SAAJ 传输附件不同,MTOM需要XOP(XML-binary Optimized Packing)来传输二进制数据。MTOM 允许将消息中包含的大型数据元素外部化,并将其作为无任何特殊编码的二进制数据随消息一起传送。MTOM 消息会打包为多部分相关 MIME 序列,放在SOAP 消息中一起传送。因此你可以看出MTOM 并不是将附件转为Base64 编码,这样可以大大的提高性能,因为二进制文件转Base64 编码会非常庞大。
MTOM 方式中要传输的附件必须使用javax.activation.DataHandler 类,然后对象类型还要使用@javax.xml.binding.annotation.XmlMimeType 进行注解,标注这是一个附件类型的数据。
这里拿上传及下载用户的图像为例子,大致的说下CXF的MTOM协议对附件的支持
package com.exp.service.outer; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.activation.DataHandler; import javax.activation.FileDataSource; import org.springframework.stereotype.Service; @Service("HelloWorldImpl") public class HelloWorldImpl implements HelloWorld { public String say(String name) { return name ",您好!"; } public String sayHello(User user) { return user.getName() ",您好!"; } public List<User> getList(Long id){ List<User> list = new ArrayList<User>(); User user = new User(); Long sid=1L; user.setId(sid); user.setName("张三" sid); list.add(user); user = new User(); sid=2L; user.setId(sid); user.setName("张三" sid); list.add(user); user = new User(); sid=3L; user.setId(sid); user.setName("张三" sid); list.add(user); return list; } /** * <修改用户信息,包括上传用户的图像 * 创 建 人: XX * 创建时间: 2012-9-26 下午04:50:23 * @param user * @see [类、类#方法、类#成员] */ public void updateUser(User user){ System.out.println("姓名:" user.getName() ",年龄:" user.getAge()); DataHandler handler = user.getImageData(); try { InputStream is = handler.getInputStream(); OutputStream os = new FileOutputStream(new File("c:\\test11.jpg")); byte[] b = new byte[100000]; int bytesRead = 0; while ((bytesRead = is.read(b)) != -1) { os.write(b, 0, bytesRead); } os.flush(); os.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 查询用户信息,包括以附件的形式返回用户的图像 * 创 建 人: XX * 创建时间: 2012-9-26 下午04:49:43 * @return * @see [类、类#方法、类#成员] */ public User getUser(){ User user =new User(11L,"李四",21); user.setImageData(new DataHandler(new FileDataSource(new File("d:" File.separator) "test.jpg"))); return user; } }