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 上传以及下载文件相关推荐

  1. java web文件夹_JAVA WEB项目文件夹上传下载解决方案

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  2. ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件

    最近项目中需要实现将文件先存放到ftp上,需要的时候再从ftp上下载,做的过程中碰到了问题,发现中文文件名的无法上传到ftp上,ftp上的中文文件名的文件下载不下来,几番折腾,终于搞定了,记录一下备忘 ...

  3. java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...

    需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...

  4. java scp 文件夹_利用scp 远程上传下载文件/文件夹

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  5. soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)

    最近公司业务上使用webservice 频繁.由于之前都是自己建立webservice 自己定义提供帮对方服务,现在则相反需求都是根据人家提供的wsdl 文件来生成 我们系统必须提供的接口.刚起初不知 ...

  6. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  7. cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF

    cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...

  8. 19.Silverlight调用webservice上传多个文件

    Silverlight不支持读写服务器端的硬盘,可是很多时候用户需要在Silverlight客户端往服务器端上传文件,那么本节将讲述 Silverlight中最简单的上传文件的方式:在Silverli ...

  9. java cxf_拥抱模块化Java平台:Java 10上的Apache CXF

    java cxf Java 9版本终于将Project Jigsaw交付给大众已经过去了一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答案并不明显和直接. 总 ...

  10. 拥抱模块化Java平台:Java 10上的Apache CXF

    Java 9版本终于将Project Jigsaw交付给大众已经过去了一年多的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答案并不明显和直接. 总的来说, 拼图项 ...

最新文章

  1. Python descriptor
  2. jsp页面展示更加商品的分类,控制商品的显示
  3. 是否可能存在一种不需要力的相互作用?
  4. c语言中0xde 这怎么用,为什么使用0x61c88647
  5. python怎么改界面颜色_Python的matplotlib绘图如何修改背景颜色的实现
  6. 方便的画拓扑图的软件,大家一起分享
  7. 综合短网址缩短和还原源码
  8. 网关是什么?有什么作用?
  9. 基于ConvLSTM的伦敦空气质量预测(2) 算法实施
  10. Vue 作者尤雨溪:以匠人的态度不断打磨完善 Vue
  11. Git的17条基本用法
  12. JS-13-jquery
  13. C语言程序——小数的四舍五入
  14. 我的Verilog HDL学习历程(二) 组合逻辑电路的一个实例:基于EGO1板子
  15. OS X 修改网卡 Mac 地址的方法
  16. 使用python+selenium清空淘宝购物车
  17. charles把抖音数据保存到本地处理
  18. 【HTML系列】第二章 · HTML基础
  19. 对接支付宝App支付和网页支付接口详解
  20. wpsword怎样涂黑方框_Excel中如何插入空心小方块和实心小方块的标志?

热门文章

  1. A.4.4-密封类和密封方法 sealed
  2. 图书流通管理系统——软件开发项目实践
  3. 将时间戳转化为带时区的格式
  4. spring mvc 中,直接注入的 HttpServletRequst 是否安全呢?
  5. 请求示例代码_新版云效:代码托管初体验
  6. ORACLE 10G R1手工创建数据库步骤
  7. 我的实用设计模式之关于Policy-based design
  8. 使用Adorner显示WPF控件的边界点
  9. Redis 之 简单备份还原
  10. Java多线程编程那些事:volatile解惑