首页

CXF webservice 上传以及下载文件

java

2020-7-29

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;
	}
}

资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
cxf_upload/cxf_demo/.classpath , 2152
cxf_upload/cxf_demo/.mymetadata , 304
cxf_upload/cxf_demo/.project , 1010
cxf_upload/cxf_demo/.settings/org.eclipse.core.resources.prefs , 88
cxf_upload/cxf_demo/.settings/org.eclipse.jdt.core.prefs , 330
cxf_upload/cxf_demo/logs/errlog.txt , 0
cxf_upload/cxf_demo/logs/log.txt , 18772
cxf_upload/cxf_demo/logs/log.txt.2012-09-25 , 42262
cxf_upload/cxf_demo/src/com/exp/common/core/Constants.java , 123
cxf_upload/cxf_demo/src/com/exp/service/core/TestService.java , 277
cxf_upload/cxf_demo/src/com/exp/service/outer/HelloWorld.java , 618
cxf_upload/cxf_demo/src/com/exp/service/outer/HelloWorldImpl.java , 2178
cxf_upload/cxf_demo/src/com/exp/service/outer/User.java , 1345
cxf_upload/cxf_demo/src/com/exp/web/core/action/TestAction.java , 973
cxf_upload/cxf_demo/src/com/exp/web/core/servlet/Log4jInit.java , 1999
cxf_upload/cxf_demo/src/config/spring_cfg/appCtx-cxf.xml , 2157
cxf_upload/cxf_demo/src/config/spring_cfg/appCtx-system.xml , 576
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_packages.xml.1.1 , 1066
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_packages.xml.1.7 , 4281
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_task.xml.1.14 , 5664
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_task.xml.1.18 , 7152
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_task.xml.1.2 , 3063
cxf_upload/cxf_demo/src/config/struts_cfg/.#struts_task.xml.1.8 , 4696
cxf_upload/cxf_demo/src/log4j.properties , 1801
cxf_upload/cxf_demo/src/struts.properties , 389
cxf_upload/cxf_demo/src/struts.xml , 511
cxf_upload/cxf_demo/test/com/exp/service/outer/HelloWorldClient.java , 1633
cxf_upload/cxf_demo/WebContent/index.jsp , 834
cxf_upload/cxf_demo/WebContent/META-INF/MANIFEST.MF , 39
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/common/core/Constants.class , 380
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/service/core/TestService.class , 733
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/service/outer/HelloWorld.class , 845
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/service/outer/HelloWorldClient.class , 2557
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/service/outer/HelloWorldImpl.class , 3679
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/service/outer/User.class , 1884
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/web/core/action/TestAction.class , 848
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/com/exp/web/core/servlet/Log4jInit.class , 2186
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/spring_cfg/appCtx-cxf.xml , 2157
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/spring_cfg/appCtx-system.xml , 576
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_packages.xml.1.1 , 1066
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_packages.xml.1.7 , 4281
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_task.xml.1.14 , 5664
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_task.xml.1.18 , 7152
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_task.xml.1.2 , 3063
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/config/struts_cfg/.#struts_task.xml.1.8 , 4696
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/log4j.properties , 1801
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/struts.properties , 389
cxf_upload/cxf_demo/WebContent/WEB-INF/classes/struts.xml , 511
cxf_upload/cxf_demo/WebContent/WEB-INF/web.xml , 2732
lib/asm-3.1.jar , 43033
lib/commons-beanutils-1.7.0.jar , 188671
lib/commons-codec-1.4.jar , 58160
lib/commons-collections.jar , 571259
lib/commons-fileupload-1.2.jar , 53082
lib/commons-lang-2.3.jar , 245274
lib/commons-logging-1.0.4.jar , 38015
lib/cxf-2.6.2.jar , 6366056
lib/freemarker-2.3.8.jar , 802494
lib/geronimo-jaxws_2.2_spec-1.1.jar , 60171
lib/geronimo-ws-metadata_2.0_spec-1.1.3.jar , 15572
lib/log4j-1.2.15.jar , 391834
lib/neethi-3.0.2.jar , 71320
lib/ognl-2.6.11.jar , 168081
lib/spring.jar , 2949500
lib/struts2-core-2.0.11.2.jar , 2323059
lib/struts2-spring-plugin-2.0.11.2.jar , 8988
lib/wsdl4j-1.6.2.jar , 148429
lib/wss4j-1.6.7.jar , 420128
lib/xmlschema-core-2.0.3.jar , 162818
lib/xwork-2.0.5.jar , 457579
没有账号? 忘记密码?

社交账号快速登录