java cxf文件上传下载,CXF webservice 上传以及下载文件
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 getList(Long id){
List list = new ArrayList();
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;
}
}
需3积分下载
去下载
java cxf文件上传下载,CXF webservice 上传以及下载文件相关推荐
- java web文件夹_JAVA WEB项目文件夹上传下载解决方案
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件
最近项目中需要实现将文件先存放到ftp上,需要的时候再从ftp上下载,做的过程中碰到了问题,发现中文文件名的无法上传到ftp上,ftp上的中文文件名的文件下载不下来,几番折腾,终于搞定了,记录一下备忘 ...
- java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...
需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...
- java scp 文件夹_利用scp 远程上传下载文件/文件夹
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)
最近公司业务上使用webservice 频繁.由于之前都是自己建立webservice 自己定义提供帮对方服务,现在则相反需求都是根据人家提供的wsdl 文件来生成 我们系统必须提供的接口.刚起初不知 ...
- JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载
文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...
- cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF
cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...
- 19.Silverlight调用webservice上传多个文件
Silverlight不支持读写服务器端的硬盘,可是很多时候用户需要在Silverlight客户端往服务器端上传文件,那么本节将讲述 Silverlight中最简单的上传文件的方式:在Silverli ...
- java cxf_拥抱模块化Java平台:Java 10上的Apache CXF
java cxf Java 9版本终于将Project Jigsaw交付给大众已经过去了一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答案并不明显和直接. 总 ...
- 拥抱模块化Java平台:Java 10上的Apache CXF
Java 9版本终于将Project Jigsaw交付给大众已经过去了一年多的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答案并不明显和直接. 总的来说, 拼图项 ...
最新文章
- Python descriptor
- jsp页面展示更加商品的分类,控制商品的显示
- 是否可能存在一种不需要力的相互作用?
- c语言中0xde 这怎么用,为什么使用0x61c88647
- python怎么改界面颜色_Python的matplotlib绘图如何修改背景颜色的实现
- 方便的画拓扑图的软件,大家一起分享
- 综合短网址缩短和还原源码
- 网关是什么?有什么作用?
- 基于ConvLSTM的伦敦空气质量预测(2) 算法实施
- Vue 作者尤雨溪:以匠人的态度不断打磨完善 Vue
- Git的17条基本用法
- JS-13-jquery
- C语言程序——小数的四舍五入
- 我的Verilog HDL学习历程(二) 组合逻辑电路的一个实例:基于EGO1板子
- OS X 修改网卡 Mac 地址的方法
- 使用python+selenium清空淘宝购物车
- charles把抖音数据保存到本地处理
- 【HTML系列】第二章 · HTML基础
- 对接支付宝App支付和网页支付接口详解
- wpsword怎样涂黑方框_Excel中如何插入空心小方块和实心小方块的标志?