`
dingchd
  • 浏览: 15665 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Axis2 附件传输 样例 解读

 
阅读更多
axis2 的客户端发送带附件的过程如下
		//设置options
		Options options = new Options();
		options.setTo(targetEPR);
		options.setProperty(Constants.Configuration.ENABLE_SWA,
				Constants.VALUE_TRUE);
		options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);		
		options.setTimeOutInMilliSeconds(1000000);
		options.setTo(targetEPR);
		options.setAction("urn:uploadFile");

		//获取context
		String base = System.getenv("AXIS2_HOME");
		ConfigurationContext configContext = ConfigurationContextFactory
				.createConfigurationContextFromFileSystem(base+File.separator+"repository",
						null);

		//创建发送客户端
		ServiceClient sender = new ServiceClient(configContext, null);
		sender.setOptions(options);
		OperationClient mepClient = sender
				.createClient(ServiceClient.ANON_OUT_IN_OP);

		//创建attach的消息上下文,指定attachid
		MessageContext mc = new MessageContext();
		FileDataSource fileDataSource = new FileDataSource(file);		
		DataHandler dataHandler = new DataHandler(fileDataSource);
		String attachmentID = mc.addAttachment(dataHandler);//重点是这句

		//构建信封(xml消息),并将信封设置到消息上下文中
		SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
		SOAPEnvelope env = fac.getDefaultEnvelope();
		OMNamespace omNs = fac.createOMNamespace(
				"http://service.soapwithattachments.sample", "swa");
		OMElement uploadFile = fac.createOMElement("uploadFile", omNs);
		OMElement nameEle = fac.createOMElement("name", omNs);
		nameEle.setText(destinationFile);
		OMElement idEle = fac.createOMElement("attchmentID", omNs);
		idEle.setText(attachmentID);
		uploadFile.addChild(nameEle);
		uploadFile.addChild(idEle);
		env.getBody().addChild(uploadFile);
		mc.setEnvelope(env);

		
		//将消息上下文设置到客户端,发送!
		mepClient.addMessageContext(mc);
		mepClient.execute(true);



1)构建信封的过程即使构建xml数据结构
2)MessageContext 分为In 和Out

服务端接受消息过程如下:
       // 获取当前消息上下文
       MessageContext msgCtx = MessageContext.getCurrentMessageContext();
       // 提取附件id,并获取附件二进制流
       Attachments attachment = msgCtx.getAttachmentMap();
       DataHandler dataHandler = attachment.getDataHandler(attchmentID);
       File file = new File(name);
       FileOutputStream fileOutputStream = new FileOutputStream(file);
       // 业务代码,写文件
       dataHandler.writeTo(fileOutputStream);
       fileOutputStream.flush();
       fileOutputStream.close();


服务端发送response给客户端的消息也可以粘贴附件,就是所谓的axis2 下载文件功能
下面代码接上面代码
 		OperationContext opCtx = msgCtx.getOperationContext();
		MessageContext outMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
		
		DataHandler out = new DataHandler(new FileDataSource(new File("c:\\1.txt")));
		String downloadid = outMsgCtx.addAttachment(out);
		return downloadid;


客户端拿到响应的message时,就可以根据downloadid找到附件的文件流

其他设置可以参考:http://axis.apache.org/axis2/java/core/docs/mtom-guide.html
分享到:
评论

相关推荐

    (转)Axis2 附件传输

    【文件使用】"使用Axis2传输附件.txt" 该文本文件很可能包含了详细的代码示例,指导读者如何在实际项目中设置和使用Axis2的附件传输功能。它可能涵盖了服务端和客户端的代码实现,以及可能遇到的问题和解决策略。 ...

    Axis 服务端/客户端 样例

    【Axis 服务端/客户端 样例】是一个用于学习和实践Axis框架的示例资源包。Axis是一个开源的Web服务工具包,它主要用于构建和部署基于SOAP(简单对象访问协议)的Web服务。这个资源包涵盖了 Axis 1.4 的完整二进制...

    Axis2环境配置和样例测试

    **标题:“Axis2环境配置和样例测试”** 在IT领域, Axis2 是一个流行的开源Web服务引擎,它是Apache软件基金会开发的。它基于Java语言,用于构建高性能、灵活的Web服务。本教程将深入探讨如何配置Axis2环境并进行...

    axis2开发webservice的样例

    本篇将深入讲解如何利用Axis2与Spring框架的整合来开发Web服务,以及样例的实现步骤。 首先,了解**Axis2**。Axis2是 Axis 的第二代版本,它提供了更高效、可扩展的架构。Axis2 支持SOAP 1.1 和 SOAP 1.2 协议,...

    axis2_demo实战 复杂对象传输 文件传输

    本实战案例将关注使用Axis2进行复杂对象传输以及文件传输,特别是如何通过Web服务来传递列表(List)、对象(Object)和文件。 首先,让我们深入理解`axis2 Demo`。Axis2 提供了一个强大的开发和部署环境,它支持多种...

    axis2 发送附件

    axis2 发送附件axis2 发送附件axis2 发送附件axis2 发送附件

    axis 1.4 学习样例

    axis 1.4 学习样例

    java 通过axis调用天气预报的webservice

    2. **生成Java客户端 stubs**:使用Apache Axis,你可以通过运行wsdl2java命令将WSDL文件转换为Java类,这些类(也称为stubs)代表了你可以调用的服务方法。这样,你可以像调用本地Java方法一样调用远程的WebService...

    运行Axis2样例步骤.doc

    在本文中,我们将详细探讨如何运行Axis2样例步骤,以成功启动Axis2自带的快速启动项目Quickstart。首先,我们需要了解Axis2是Java平台上一个流行的Web服务框架,用于创建和部署Web服务。它提供了高性能、灵活性和...

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...

    Axis2范例,对象传输

    "Axis2范例,对象传输" 指的是使用Apache Axis2框架进行Web服务开发的一个示例项目,重点在于演示如何通过Axis2传输和处理对象,特别是涉及对象与XML之间的转换,以及在客户端和服务端之间的通信。 **描述详解:** ...

    axis2的API,axis2 API,axis2帮助文档

    Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了基于SOAP(Simple Object Access Protocol)的Web服务实现。本文将详细介绍Axis2的API及其在Web服务开发中的应用,同时也会探讨Axis2的帮助文档如何协助...

    axis2相关的jar包

    axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-...

    axis2-1.6.2

    axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...

    axis2-1.6.1

    - 多协议支持:除了基本的SOAP 1.1和1.2,Axis2还支持REST、MTOM(Message Transmission Optimization Mechanism)和SwA(Soap with Attachments)等传输方式。 - 高效的消息处理:使用了基于内存的数据结构,Axis2...

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    Apache Axis2是著名的开源Web服务框架,用于构建和部署高效且灵活的Web服务。这个框架是基于Axis1的升级版,提供了许多改进和新特性,包括更好的性能、模块化架构和增强的MIME支持。标题提到的“axis2-1.5.1-bin.zip...

    Axis_API和axis2_API

    此外,Axis2支持多种传输协议(如HTTP、JMS和SMTP),并提供了更高级别的消息处理机制。 在使用Axis和Axis2时,API文档起着至关重要的作用。这些文档通常包括以下内容: 1. **API参考**:详细列出每个类、接口和...

    axis2-1.6.2.zip

    Axis2是Apache软件基金会开发的一款Java Web服务框架,主要用于构建和部署Web服务。在Web服务领域,Axis2扮演着核心的角色,它提供了丰富的功能来支持服务导向架构(SOA)。标题中的"axis2-1.6.2.zip"指的是Axis2的...

Global site tag (gtag.js) - Google Analytics