(九)二进制文件在webservice中的处理(以DataHandler方式)
一、需求
- 1. 客户端从服务端下载附件
- 2. 客户端上传附件到服务端
二、案例
- 本章通过DataHander的方式来进行传递。
注意: 1:接口中要定义@MTOM
2:方法中要使用@XmlMimeType(value = "application/octet-stream")
服务端
2.1 编写服务接口
package com.webservice; import javax.activation.DataHandler;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.ws.soap.MTOM; /**
* 设置AttachementPart中MIME的功能
*
*
* 1:在接口中开启@MTOM注解。
*
* 2:在方法中加上@XmlMimeType(value = "application/octet-stream")
*
*/
@WebService
@MTOM
public interface IFileDataHandler {
@WebResult(name = "sendServerImageResult")
@XmlMimeType(value = "application/octet-stream")
public DataHandler sendServerImage(); public void receiveClientImage(@WebParam(name = "dataHandler")
@XmlMimeType(value = "application/octet-stream")
DataHandler dataHandler, @WebParam(name = "filename")
String filename);
}
2.2 实现服务接口
package com.webservice; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.jws.WebService; import org.apache.commons.io.IOUtils; @WebService(endpointInterface = "com.webservice.IFileDataHandler")
public class SendFileDataHandler implements IFileDataHandler { public DataHandler sendServerImage() {
File file = new File("E:\\server\\jQuery1.4 API-20100204.chm"); DataSource dataSource = new FileDataSource(file);
DataHandler dataHandler = new DataHandler(dataSource);
return dataHandler;
} public void receiveClientImage(DataHandler dataHandler, String filename) {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream("E:\\server\\" + filename + "");
dataHandler.writeTo(outputStream);
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(outputStream);
}
}
}
2.3 发布服务
package com.webservice; import javax.xml.ws.Endpoint; public class TestPublish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:5050/sendDataHandler",
new SendFileDataHandler()); System.out.println("服务发布成功...");
}
}
客户端
2.4 测试
package com.file_handler; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource; public class TestMain {
public static void main(String[] args) {
//TestMain.getServerFile(); TestMain.sendClientFile();
} /**
* 接收服务端发送的文件
*/
private static void getServerFile() {
IFileDataHandler dataService = new SendFileDataHandlerService()
.getSendFileDataHandlerPort(); DataHandler dataHandler = dataService.sendServerImage(); try {
dataHandler.writeTo(new FileOutputStream("E:\\client\\test.chm"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } private static void sendClientFile() {
IFileDataHandler dataService = new SendFileDataHandlerService()
.getSendFileDataHandlerPort();
String filename = "Storm.zip"; DataSource dataSource = new FileDataSource(new File("E:\\client\\"
+ filename + ""));
DataHandler dataHandler = new DataHandler(dataSource); dataService.receiveClientImage(dataHandler, filename);
} }
(九)二进制文件在webservice中的处理(以DataHandler方式)的更多相关文章
- (八)二进制文件在webservice中的处理(以byte[]字节数组方式)
一.介绍 二进制文件在webservice中的处理. A:通过byte[]字节数组的方式来传递.比较适合小文件,字节数组不能太大的情况.(本章所用) B:通过DataHander的方式来进行传递. 1 ...
- WebService中方法的相关注意事项
2014-11-14 在WebService中定义方法,有一些注意的地方: (1) 方法上面需要增加 [WebMethod] 属性,标志该方法是一个WebService方法: (2)方法的返回值可以为 ...
- MAXIMO系统 java webservice 中PDA移动应用系统开发
MAXIMO系统 java webservice 中PDA移动应用系统开发 平时经常用的wince PDA手持设备调用c#写的webservice, 当然PDA也可以调用java webservic ...
- WCF和WebService中获取当前请求报文的方法
WCF中: 1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNe ...
- 在webservice中传递Hashtable
webservice中不支持hashtable的数据类型,那么如何在webservice中传递hashtable呢?我们可以通过将hashtable转化为webservice中支持的数组的类型来进行传 ...
- flex调用webservice中的datatable结果写入datagrid
webservice配置文件 <appSettings> <add key="sqlConDuke" value="server=10.9.34.88; ...
- Webservice中使用Session、Application
原文:Webservice中使用Session.Application 在Asp.Net 2.0里,已经能够在WebMethod里使用 Session . Application 这种服务器变量了.一 ...
- 在asp.net webservice中如何使用session
原文:在asp.net webservice中如何使用session 原文:刘武|在asp.net webservice中如何使用session 在使用asp.net编写webservice时,默认情 ...
- Java - 在WebService中使用Client调用三方的RestAPI
背景 近期,由于项目的要求需要在自己的webservice中调用远程的WebAPI(Restful format).自己的webservice程序是用Java编码写的,所以需要在其中实现一个Clien ...
随机推荐
- ST Debug (printf) Viewer for Jlink
Debug (printf) Viewer http://www.keil.com/support/man/docs/uv4/uv4_db_dbg_serialwin.htm Serial Windo ...
- HBase-概述
一种分布式.可扩展.支持海量数据存储的 NoSQL 数据库. 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从 HBase 的底层物理存储结构(K-V)来看,HB ...
- OpenJudge计算概论-数字求和
/*========================================================= 数字求和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个 ...
- 导出 VuePress构建的网站为 PDF
前言 学 Rust 也有一段时间了,网上也有不少官方文档的中文翻译版,但是似乎只有 Rust中文网站 文档一直是最新的,奈何并没有 PDF 供直接下载,是在是不太方便,为了方便阅读以及方便后续文档更新 ...
- Masonry详解
- (void)viewDidLoad { [super viewDidLoad]; //1.view1 居中显示 UIView *view1 = [[UIView alloc]init]; view ...
- Node.js使用ftp连接远程ftp服务器枚举和下载文件示例
示例代码: var Ftp = require('ftp'); var fs = require('fs'); var path = require('path'); // 首先判断参数中是否包含{d ...
- Java使用Apache Commons Exec运行本地命令行命令
首先在pom.xml中添加Apache Commons Exec的Maven坐标: <!-- https://mvnrepository.com/artifact/org.apache.comm ...
- 【Leetcode_easy】690. Employee Importance
problem 690. Employee Importance 题意:所有下属和自己的重要度之和,所有下属包括下属的下属即直接下属和间接下属. solution:DFS; /* // Employe ...
- SPSS 2019年10月31日 20:20:53今日学习总结
◆描述性统计分析 概念:描述性统计分析方法是指应用分类.制表.图形及概括性数据指标(去均值,方差等)来概括数据分布特征的方法. 而推断性统计分析方法则是通过随机抽样,应用统计方法把从样本数据得到的结论 ...
- 如何衡量一个人的 JavaScript 水平?
参考链接:https://blog.csdn.net/weixin_37615279/article/details/103658866