Java WS和二进制数据传送
二进制数据在WS中传送,可以有两种方式:1 把数据直接作为xml文档中某元素的字节流,作为XML解析器要解析的一部分2 二进制数据作为附件,作为带外(out of band)数据随同XML发送, 提高了效率.
(一) 有关介绍
二进制数据在WebService中传送,可以有两种方式:
1 把数据直接作为xml文档中某元素的字节流,作为XML解析器要解析的一部分,很明显这种方式比较低效.
2 二进制数据作为附件,作为带外(out of band)数据随同XML发送, 提高了效率.目前这类处理有几个规范:
DIME(直接 Internet 消息封装),这个数据包装格式及其处理,只有微软在支持.
MTOM(SOAP 消息传输优化机制)和XOP(二进制 XML 优化封装);
在Sun规范JAX-RPC1.1中,要求使用SwA(SOAP with Attachments) 支持附件,为此Sun提供了SOAP with Attachments API for Java,带附件的SoapAPI(SAAJ),早期它和jaxm合在一起的,现在已经独立开来形成了soap包,这个API专门用来处理Soap附件的所有操作.
JAXRPC 1.1 规范定义了MIME类型到Java类型的影射.
| MIME Type | Java Type |
| image/gif | java.awt.Image |
| image/jpeg | java.awt.Image |
| text/plain | java.lang.String |
| multipart/* | javax.mail.internet.MimeMultipart |
| text/xml or application/xml | javax.xml.transform.Source |
JAXRPC 1.1 规范定义了这种情况:当绑定到上表中没有定义的类型影射或者是绑定到备用MIME类型时,它应该影射到 javax.activation.DataHandler.
wscompile工具中的选项-f:
(二) 编写例子应用
文件清单
SEI接口类IImage.java,实现SEI接口的类IIMageImpl.java,描述文件信息的值类型类FileInfo.java,Web应用部署描述文件web.xml,WS发布配置文件jaxrpc-ri.xml,WS编译配置文件config-interface.xml,构建客户端桩的config-wsdl.xml,构建文件build.xml
客户端测试类:MainBrowser.java,ImageListProvider.java和ImageLabelProvider.java,测试使用了SWT和JFace,请适当配置你的Eclipse环境,引入适当的库.
这个例子是从SEI开始,绑定样式为 RPC.
IImage.java清单:
package com.bin;
import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.activation.*;
import javax.xml.soap.*;
import java.util.*;
public interface IImage extends Remote {
public DataHandler fetchImg(String sn) throws RemoteException;
public ArrayList fetchImgs(String[] sn) throws RemoteException;
public SOAPMessage construcMsg(String[] fn) throws RemoteException;
public ArrayList fetchFileList() throws java.rmi.RemoteException;
public FileInfo getFileList(String fn) throws java.rmi.RemoteException;
}
- 本文关键词:

