(九)二进制文件在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 ...
随机推荐
- qt 创建程序目录
voidinitDir() { QStringuserFilePath=QStandardPaths::writableLocation(QStandardPaths::DocumentsLocati ...
- go中json的tag使用
指定json中的key名字: 指定数据类型, string number, boolean 忽略空值(值不为空, 不忽略) 忽略字段 "-" (无论有没有值, 都忽略) type ...
- 上传图片获取base64编码、本地预览
一.读取文件的对象 — new FileReader() 上传图片接口参数有图片base64编码(数组, imgBase64List ),主要用到 读取文件的对象 [ new FileReader ...
- 【Java】Unicode和字符串互转
Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一 ...
- LightGBM与评分卡
调参策略 最大化 off_ks + 0.8(off_ks-train_ks) import pandas as pd from sklearn.metrics import roc_auc_score ...
- Linux CentOS 7 常用命令集合
- angular组件数据和事件
<h1>引入图片</h1> <img src="assets/images/02.png" alt="收藏" /> < ...
- PHP判断是否在微信内部浏览器访问
<?php if(is_weixin()){ echo "这是微信内部浏览器"; }else{ echo "这是微信外部浏览器"; } function ...
- 014-多线程-基础-Exchanger-行线程间的数据交换
一.简介 Exchanger类允许在两个线程之间定义同步点,当两个线程都到达同步点时,它们交换数据.也就是第一个线程的数据进入到第二个线程中,第二线程的数据进入到第一个线程中. Exchanger可以 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_03-用户认证技术方案-Oauth2协议
2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源 ...