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传输附件.txt" 该文本文件很可能包含了详细的代码示例,指导读者如何在实际项目中设置和使用Axis2的附件传输功能。它可能涵盖了服务端和客户端的代码实现,以及可能遇到的问题和解决策略。 ...
【Axis 服务端/客户端 样例】是一个用于学习和实践Axis框架的示例资源包。Axis是一个开源的Web服务工具包,它主要用于构建和部署基于SOAP(简单对象访问协议)的Web服务。这个资源包涵盖了 Axis 1.4 的完整二进制...
**标题:“Axis2环境配置和样例测试”** 在IT领域, Axis2 是一个流行的开源Web服务引擎,它是Apache软件基金会开发的。它基于Java语言,用于构建高性能、灵活的Web服务。本教程将深入探讨如何配置Axis2环境并进行...
本篇将深入讲解如何利用Axis2与Spring框架的整合来开发Web服务,以及样例的实现步骤。 首先,了解**Axis2**。Axis2是 Axis 的第二代版本,它提供了更高效、可扩展的架构。Axis2 支持SOAP 1.1 和 SOAP 1.2 协议,...
本实战案例将关注使用Axis2进行复杂对象传输以及文件传输,特别是如何通过Web服务来传递列表(List)、对象(Object)和文件。 首先,让我们深入理解`axis2 Demo`。Axis2 提供了一个强大的开发和部署环境,它支持多种...
axis2 发送附件axis2 发送附件axis2 发送附件axis2 发送附件
axis 1.4 学习样例
2. **生成Java客户端 stubs**:使用Apache Axis,你可以通过运行wsdl2java命令将WSDL文件转换为Java类,这些类(也称为stubs)代表了你可以调用的服务方法。这样,你可以像调用本地Java方法一样调用远程的WebService...
在本文中,我们将详细探讨如何运行Axis2样例步骤,以成功启动Axis2自带的快速启动项目Quickstart。首先,我们需要了解Axis2是Java平台上一个流行的Web服务框架,用于创建和部署Web服务。它提供了高性能、灵活性和...
标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...
"Axis2范例,对象传输" 指的是使用Apache Axis2框架进行Web服务开发的一个示例项目,重点在于演示如何通过Axis2传输和处理对象,特别是涉及对象与XML之间的转换,以及在客户端和服务端之间的通信。 **描述详解:** ...
Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了基于SOAP(Simple Object Access Protocol)的Web服务实现。本文将详细介绍Axis2的API及其在Web服务开发中的应用,同时也会探讨Axis2的帮助文档如何协助...
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.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_...
- 多协议支持:除了基本的SOAP 1.1和1.2,Axis2还支持REST、MTOM(Message Transmission Optimization Mechanism)和SwA(Soap with Attachments)等传输方式。 - 高效的消息处理:使用了基于内存的数据结构,Axis2...
Apache Axis2是著名的开源Web服务框架,用于构建和部署高效且灵活的Web服务。这个框架是基于Axis1的升级版,提供了许多改进和新特性,包括更好的性能、模块化架构和增强的MIME支持。标题提到的“axis2-1.5.1-bin.zip...
此外,Axis2支持多种传输协议(如HTTP、JMS和SMTP),并提供了更高级别的消息处理机制。 在使用Axis和Axis2时,API文档起着至关重要的作用。这些文档通常包括以下内容: 1. **API参考**:详细列出每个类、接口和...
Axis2是Apache软件基金会开发的一款Java Web服务框架,主要用于构建和部署Web服务。在Web服务领域,Axis2扮演着核心的角色,它提供了丰富的功能来支持服务导向架构(SOA)。标题中的"axis2-1.6.2.zip"指的是Axis2的...