`
elicer
  • 浏览: 133662 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Web Service handle Binary Content

阅读更多

通过JAX-WS 2.1,你能够发送binary data 在基于soap 的webservice application 中。它有两种方式来反送binary data.
1.直接发送encoded的binary data 在soap请求的body中。
2.把binary data 作为soap body的一个附件来发送
第一种发送方式的优点是比较通用,它适用于任何传输协议(SOAP,/HTTP, SOAP/JMS, and so on),但是它有一个弊端就是这些要传输的binarydata 会被JAX-WS 2.1 使用base64 encoded.这将会导致要传输的soap Message 变的很大,导致严重的性能问题。
实例代码如下:
Service Class

package itso.hello;
import javax.jws.WebService;
@WebService
public class HelloBinaryMessenger {
public byte[] sayHello(byte[] nameAsBytes) {
return String.format("Hello %s", new
String(nameAsBytes)).getBytes();
}
}


Client 端class

public class HelloBinaryClient {
public static void main(String... args) throws Exception {
HelloBinaryMessengerService service = new
HelloBinaryMessengerService();
112 IBM WebSphere Application Server V7.0 Web Services Guide
HelloBinaryMessenger port =
service.getHelloBinaryMessengerPort();
byte[] message = port.sayHello( "Milo".getBytes() );
System.out.println( new String(message) );


生成的soap request 跟soap response如下

<!-- SOAP Request Envelope -->
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sayHello xmlns:ns2="http://hello.itso/">
<arg0>TWlsbw==</arg0>
</ns2:sayHello>
</S:Body>
</S:Envelope>

<!-- SOAP Response Envelope -->
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sayHelloResponse xmlns:ns2="http://hello.itso/">
<return>SGVsbG8gTWlsbw==</return>
</ns2:sayHelloResponse>
</S:Body>
</S:Envelope>


如果你使用第二种方式的化,被传输的binary data 不会被encode,JAX-WS 2.1会使用MTOM(Message Transport optimize Mechanism)机制来自动处理attachment.你所要做的就是在service 端跟client 端启用MTOM.当然这种传输方式要求run times要支持SOAP 1.1/HTTP 或者SOAP 1.2/HTTP.
示例代码如下:
Server端启用MTOM,Binding Type 设成SOAPBinding.SOAP11HTTP_MTOM_BINDING:

@WebService
//Binding Type 设成SOAPBinding.SOAP11HTTP_MTOM_BINDING
@BindingType(value=SOAPBinding.SOAP11HTTP_MTOM_BINDING)
public class HelloBinaryMessenger {
public byte[] sayHello(byte[] nameAsBytes) {
return String.format("Hello %s", new
String(nameAsBytes)).getBytes();
}
}



Client端启用Enable MTOM:

SOAPBinding soapBinding = (SOAPBinding)
bindingProvider.getBinding();
soapBinding.setMTOMEnabled(true);

public class HelloBinaryClient {
public static void main(String... args) throws Exception {
HelloBinaryMessengerService service = new
HelloBinaryMessengerService();
HelloBinaryMessenger port =
service.getHelloBinaryMessengerPort();
BindingProvider bindingProvider = (BindingProvider) port;

SOAPBinding soapBinding = (SOAPBinding)
bindingProvider.getBinding();
soapBinding.setMTOMEnabled(true);
byte[] message = port.sayHello( "Milo".getBytes() );
System.out.println( new String(message) );

 

 

0
0
分享到:
评论

相关推荐

    Hessian Binary Web Service Protocol远程接口调用入门Demo

    Hessian二进制Web服务协议(Hessian Binary Web Service Protocol)是一种高效的、轻量级的远程过程调用(RPC)协议,它主要用于提高Web服务之间的通信效率。Hessian由Caucho Technology公司开发,旨在解决XML-RPC在...

    IndexingService_Binary.zip

    标题中的"IndexingService_Binary.zip"提示我们关注的是与索引服务相关的二进制文件。这可能是指Windows操作系统中的“Indexing Service”,它是一个用于快速检索计算机上文件内容和属性的服务。在Windows中,这个...

    RESTFul.Web.Service.Development.with.Jersey.2

    This book provides a comprehensive introduction to Jersey framework (an implementation of JAX-RS specification) as the application development framework for RESTFul web service development. This book ...

    用Axis2创建Web Service

    【Apache Axis2 创建 Web Service 知识点详解】 Apache Axis2 是一个强大的 Web Service 框架,由 Apache 软件基金会开发,主要用于构建和部署高性能、高效率的 Web Services。它基于 Java 语言,提供了全面的 Web ...

    利用JBOSS开发WEB SERVICE

    ### 利用JBOSS开发WEB SERVICE:详细指南与实践 #### 核心知识点概览 本篇将深入探讨在JBoss应用服务器上构建Web Service的全面指南,涵盖从安装配置到开发、测试、安全及高级特性应用的全过程。重点包括JBossWS的...

    Axis2与Eclipse整合开发Web Service

    【Axis2与Eclipse整合开发Web Service】是一个关于在Eclipse集成开发环境中使用Apache Axis2创建和部署Web服务的教程。Apache Axis2是用于构建Web服务的高效且灵活的框架,而Eclipse作为流行的Java IDE,提供了方便...

    使用MyEclipse构建Web+Service.

    ### 使用MyEclipse构建Web+Service:Xfire框架下的实践 #### 一、环境准备与XFire框架介绍 在深入探讨如何使用MyEclipse构建基于XFire框架的Web Service前,我们首先需对XFire框架及其环境搭建进行简要了解。 **...

    一个基于C#+XML Web Service实现对Oracle图片的上传及浏览程序例子

    在IT行业中,XML Web Service是一种常见的跨平台、跨语言的通信机制,用于应用程序之间的数据交换。本示例中,我们探讨的是如何利用C#编程语言和XML Web Service技术来实现Oracle数据库中的图片上传与浏览功能。 ...

    Exporting Context Data into Excel Using the WebDynpro Binary Cache

    3. **二进制缓存(Binary Cache)**:WebDynpro提供了一种称为“二进制缓存”的机制,用于临时存储和检索应用程序数据。通过使用二进制缓存,可以有效地减少服务器端与客户端之间的数据传输量,提高性能。 4. **Excel...

    Web Service描述语言 WSDL 详解(转)

    **Web Service描述语言(WSDL)详解** Web Service描述语言(Web Service Description Language,简称WSDL)是一种XML格式,用于定义网络服务的接口。它允许服务提供者描述服务的访问点、使用的消息交换模式以及...

    Practical_Binary_Analysis

    ELF Format,Binary Analysis Fundamentals,Basic Binary Analysis in Linux,Disassembly and Binary Analysis Fundamentals

    cef_binary2

    集成chrome 内核收集到的 cef_binary , 包含cef 1x,2x,41,43 版本。 具体看 https://www.spotify.com/sg-en/opensource/ cef 对应 chrome版本 cef_binary_3.2357.1271.g8e0674e_windows32 cef_binary_3....

    amoeba-mysql-binary-2.2.0.tar.gz

    amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gzamoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz ...

    Zemax使用Binary-2面型设计案例,How-to-use-Binary-2.zip

    在本案例中,我们关注的是“Binary-2”面型的使用,这是一种特殊的光学表面类型,用于实现衍射光学元件(DOE)的设计。Binary-2面型在Zemax中用于创建具有离散相位变化的表面,这对于实现特定的光学功能,如色差校正...

    深圳证券交易所Binary行情数据接口规范(Ver1.03)_深交所binary行情_

    《深圳证券交易所Binary行情数据接口规范(Ver1.03)》是针对深证市场行情数据传输的一个技术文档,旨在为开发人员提供一种高效、精确地获取和解析行情信息的方法。该规范详细阐述了如何利用二进制(binary)格式进行...

    WBXML规范:Binary XML Content Format Specification

    ### WBXML规范:Binary XML Content Format Specification #### 概述 WBXML(Wireless Binary XML)是一种用于无线网络环境下的二进制XML格式规范。它旨在减少数据传输量,提高数据处理效率,尤其是在带宽受限的...

    xml binary soap 序列化

    SOAP(Simple Object Access Protocol)是基于XML的协议,用于在Web服务中传递结构化的信息。SOAP消息通常由一个XML文档构成,这使得它们易于解析但传输效率较低,因为XML文本格式的数据量较大。为了解决这个问题,...

    60 SECONDS BINARY OPTIONS SIGNALS V 1.0.0_binary_

    Indicator Metatrader 4 binary option

    C#资源库-binarytree

    C#是微软开发的一种面向对象的编程语言,被广泛用于Windows应用、游戏开发、Web服务等。 压缩包中的文件列表提供了项目的一些细节: 1. `Tree.cs`:这是核心的二叉树类定义,可能包含了二叉树节点的定义和相关操作...

Global site tag (gtag.js) - Google Analytics