深入探索SOAP1.1--使用SAAJ1.2.1(转)

SAAJ访问javawebService实现文件上传 -----以下内容摘自百度百科 SAAJ(SOAP withAttachments API for JAVA) SAAJ是在松散耦合软件系统中利用SOAP协议实现的基于XML消息传递的API规范。顾名思义,SAAJ支持带附件的SOAP消息。 对于Java API for XML Messaging (JAXM),您已经了解很多,并且可能感到奇怪,究竟JAXM发生了什么事?JAXM 1 阅读详情
本文的预定作者应该对SOAP1.1的基本规范有所了解,并熟悉了j2ee的基本开发,如果不熟悉的话,可以看一下我的Blog:使用SOAP开发java web服务--Axis开发方案 ,详细标准可以查看w3c的官方网站,连接如下:http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ 。本文主要是探讨SAAJ(SOAP with Attachment API for Java),JAXM(Java API for XML Messaging),了解SOAP在j2ee开发中的作用与其接口。JAXM和SAAJ均支持针对B2B和Web服务应用程序、基于XML的消息交换,支持诸多行业标准,包括SOAP和ebXML。 SAAJ是JWSDP的组成部分之一,JWSDP目前已经更新到了1.5版,SAAJ可以从SUN的网站单独下载:http://java.sun.com/xml/downloads/saaj.html,JAXM是用于XML消息交换的标准,不在JWSDP1.5的发行包内,可以另外下载:http://java.sun.com/xml/jaxm/downloads/index.html ,由于SAAJ是基于JavaMailTM API (1.2) 、 JavaBeansTM Activation Framework (JAF) (1.1.3)和JAXP(1.2.6) 的,所以也要把他们下载下来,SUN的官方网站都有提供的,好了,现在我们得到了以下包(按我下载的名称):activation.jar(JAF), jaxm-api.jar(JAXM),mail.jar(JavaMail),saaj-api.jar(SAAJ),saaj-impl.jar (SAAJ),我的JAXP已经包括在jdk1.5中了。另外还要有个支持Servlet的容器。 好了,准备工作完毕了,下面开始我们的学习: 一、 SAAJ可用于将XML文档作为SOAP消息发送和接收,而无需JAXM提供商的基础程序结构,也无需处理基于SOAP的HTTP请求/响应。SAAJ最初是JAXM1.0API软件包的组成部分,而从JAXM1.1开始,该软件包更名为SAAJ1.1API。 以下我们先了解一个简单的SOAP1.1消息: POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <------------这是信封标志 <------------这是消息头标志 5 <------------这是主体标志 DEF SAAJ API为我们提供了一个高层次SOAP消息封装接口,如:信封接口:javax.xml.soap.SOAPEnvelope,并提供了操作 getHeader(),该方法返回一个消息头:javax.xml.soap.SOAPHeader。所以,通过调用SAAJ的接口函数,我们就可以对 SOAP消息进行操作。 二、现在我们来讨论一下在不使用消息交换提供程序的JAXM时,应用程序客户端通过SOAP直接与其远程伙伴发送和接收消息操作(定义了点到点的交互作用和同步通信模型,其中发送方和接收方以请求和响应的形式交换消息。发送方发送消息并等待锁定目标位置的响应)。 发送方步骤: 1)创建SOAP连接; 2)创建消息工厂; 3)创建消息; 4)填充消息; 5)添加消息; 6)添加SOAP附件; 7)发送消息并接收响应; 8)关闭提供程序连接; 一下是我写的一个例子: /** *Sender.java *Copyright 2005-2-10 */ import javax.xml.soap.SOAPConnectionFactory; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPConnection; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPPart; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement; import javax.xml.soap.SOAPHeaderElement; import javax.xml.soap.Name; import javax.xml.soap.SOAPElement; import java.net.URL; import javax.xml.messaging.URLEndpoint; import javax.activation.DataHandler; import java.io.IOException; public class Sender{ public SOAPMessage getMessage() throws SOAPException,Exception{ //消息工厂 MessageFactory msgFactory=MessageFactory.newInstance(); SOAPMessage message=msgFactory.createMessage(); //获得一个SOAPPart对象 SOAPPart soapPart=message.getSOAPPart(); //获得信封 SOAPEnvelope soapEnvelope=soapPart.getEnvelope(); //获得消息头 SOAPHeader soapHeader=soapEnvelope.getHeader(); //获得SOAP主体 SOAPBody soapBody=soapEnvelope.getBody(); //添加头元素 SOAPHeaderElement headerElement=soapHeader.addHeaderElement( soapEnvelope.createName("StudentNo","stu","http://www.cun.edu.cn/jws")); headerElement.addTextNode("JWS0229043"); //添加消息主体 Name bodyName=soapEnvelope.createName("getStudentInfo","stu","http://www.cun.edu.cn/jws"); SOAPBodyElement bodyElement=soapBody.addBodyElement(bodyName); Name eleName=soapEnvelope.createName("StudentName"); SOAPElement se=bodyElement.addChildElement(eleName); se.addTextNode("Wang wenyin"); //添加SOAP附件 URL url=new URL("http://img20.photo.163.com/gdanthrowwy/5123911/80707051.jpg"); DataHandler dataHandler=new DataHandler(url);//use the JAF message.addAttachmentPart(message.createAttachmentPart(dataHandler)); //更新SOAP消息 message.saveChanges(); return message; } public void send(SOAPMessage message) throws SOAPException,IOException{ //创建SOAP连接 SOAPConnectionFactory scf=SOAPConnectionFactory.newInstance(); SOAPConnection sc=scf.createConnection(); //发送SOAP消息到目的地,并返回一个消息 URLEndpoint urlEndpoint=new URLEndpoint("http://localhost/saaj/StudentInfoServlet"); SOAPMessage response=sc.call(message,urlEndpoint); if(response!=null){ //输出SOAP消息到控制台 System.out.println("Receive SOAP message from localhost:"); response.writeTo(System.out); }else{ System.err.println("No response received from partner!"); } sc.close(); } public static void main(String[] args) throws SOAPException,Exception{ Sender sender=new Sender(); SOAPMessage message=sender.getMessage(); sender.send(message); } } 然后编译,注意classpath变量的设置要把以上的那些包加进去(可以设置一个脚本来完成,熟悉Ant的话,那就更加简单了)。 编译成功后,我们等到了一个Sender.class文件,这是发送方文件。当你运行java Sender的时候,就会把SOAP消息发向我们的同伴http://localhost/saaj/StudentInfoServlet ,并等待返回。以下我们继续编写一个Servlet好接收刚才发送的消息。 三、接收方Servlet应用程序saaj.war。 /** *JAXMReceiveServlet.java *Copyright 2005-2-10 */ import javax.xml.messaging.JAXMServlet; import javax.xml.messaging.ReqRespListener; import javax.xml.soap.MessageFactory; import javax.servlet.ServletException; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPEnvelope; import javax.servlet.ServletConfig; import java.io.FileOutputStream; import java.io.File; public class JAXMReceiveServlet extends JAXMServlet implements ReqRespListener{ static MessageFactory mf=null; //创建一个消息工厂 static{ try{ mf=MessageFactory.newInstance(); }catch(Exception e){ e.printStackTrace(); } }; public void init(ServletConfig sc) throws ServletException{ super.init(sc); } //处理传过来的SOAP消息,并返回一个SOAP消息 public SOAPMessage onMessage(SOAPMessage msg){ SOAPMessage resp=null; try{ System.out.println("传入的消息:"); msg.writeTo(new FileOutputStream(new File("../webapps/soapmessage.xml"))); //创建一个返回消息 resp=mf.createMessage(); SOAPEnvelope se=resp.getSOAPPart().getEnvelope(); se.getBody().addChildElement( se.createName("ResponseMessage")).addTextNode("Received Message,Thanks"); return resp; }catch(Exception e){ e.printStackTrace(); } return resp; } } 然后把相关的classpath添加进去,编译(不会的话,自己去查有关Servlet的编程,篇幅有限) web.xml部署文件: StudentInfoServlet JAXMReceiveServlet 1 StudentInfoServlet /StudentInfoServlet 至此 我们的基本工作完成了,部署好程序saaj,当你在浏览器访问 http://localhost/saaj/StudentInfoServlet ,将会返回一个错误信息,因为这里使用的是SOAP协议。 四、测试 如果部署成功的话,那开始我们的测试。 我们继续第二步的步骤,java Sender,接着我们就等待,我们在发送方创建了一个SOAP消息(有个jpg图片的附件),并发送到Servlet容器中(我的是tomcat),在服务器方接送到消息,并在webapps文件夹下创建soapmessage.xml文件,把接收到的SOAP信息写进去,并返回一个soap消息。 等过了一段时间后,sender方会返回一个soap格式的xml文件,在控制台上输出。 好了,今天的关于SOAP的深入探索就到这里了。 如果对这篇文章有问题的话可以连续我:gdanthrowwy@126.com
opencv+nvcodec实现视频硬解码 最近遇到一个新项目,AI推理在上,为了方便和节省成本的考虑决定研究下模块。根据官网的说法显卡具有独立的和模块,所以理论上和是独立互不干涉的。以前的项目都只是把显卡当成推理工具,没有将它的功能利用起来,本身也是一种浪费。事实真的有这么丝滑吗?看到这里,如果你真的觉得是白叫的那就真的是了,事实究竟如何,请听我娓娓道来。NVCODEC全称是 NVIDIA VIDEO CODEC,是NVIDIA为绝大多数显卡配置的硬件编解码单元。不一定是所有显卡都有,一般来讲越新的显卡硬件编解码就越强,支持的格式也就越新。 阅读详情

相关推荐

论文阅读:SuperGaussians: Enhancing Gaussian Splatting Using Primitives with Spatially Varying Colors

Gaussian Splattings 在基于高斯显式表示的多视图重建中展示出了令人印象深刻的结果。然而,当前的高斯基元只有单视图依赖的颜色和不透明度来表示场景的外观和几何形状,导致了一种非紧凑的表示。在本文中,我们引入了一种名为“超高斯(SuperGaussians)”的新方法,它在单个高斯基元中利用空间变化的颜色和不透明度来提高其表示能力。我们实现了双线性插值、移动核,甚至是小型神经网络作为空间变化函数。

m0_48319749的博客 1508

根据wsdl生成客户端:Use of SOAP Encoding is not supported

一.生成方式选择接收到服务端第三方给的wsdl文件,需要在本地生成客户端调用。调用或生成客户端的方式有很多种,可能你会使用eclipse上的插件、IDEA上的插件、使用xfire简单的调用方式等,会碰到各种问题,就是生成不了。其实选择哪种方式,要根据wsdl定义stype和use的方式。stype描述了服务调用方式:rpc或document,use定义了类型:encoded或literal二.wsd

zhenzhendeblog的博客 1万+

RK3588 C-PHY摄像头驱动升级踩坑记:从‘Only CSI2 supported’报错到成功取流

本文详细记录了在RK3588平台上调试C-PHY摄像头驱动的全过程,从‘Only CSI2 supported’报错分析到成功取流。内容涵盖C-PHY与CSI-2协议差异、SDK版本对比、V4L2框架下的bus-type解析机制,以及硬件排查与寄存器调优实战经验,为嵌入式Camera驱动工程师提供宝贵参考。

weixin_42522374的博客 124

深入探索SOAP1.1--使用SAAJ1.2.1

   深入探索SOAP1.1--使用SAAJ1.2.1     选择自 jwsh1984 的 Blog 本文的预定作者应该对SOAP1.1的基本规范有所了解,并熟悉了j2ee的基本开发,如果不熟悉的话,可以看一下我的Blog:使用SOAP开发java web服务--Axis开发方案 ,详细标准可以查看w3c的官方网站,连接如下:http://www.w3.org/TR/2000/N

小人物的专栏 1153

Vue2 - 最新实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)vue天地图切换视图显示改成卫星风格,切换地图图层完整代码

vue2,nuxt2,天地图,视图,卫星,地图类型切换,vue天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,vue中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue安装集成天地图详细示例源码,切换地图的样式,在天地图中如何将地图的类型随意更换,提供多种视图模式用户自由点击更换,VUE引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue2卫星天地图,能改地图的显示方式,图层类型

🏆 前端领域优质创作者 4141

Python爬虫教程:抓取短视频平台数据(以抖音和快手为例)

为什么抓取短视频平台数据?内容分析:通过抓取短视频平台上的视频内容、标题、标签等数据,可以进行内容分类、趋势分析、话题分析等。情感分析:抓取视频的评论数据,并进行情感分析,帮助企业或组织了解公众的情绪反馈。用户行为分析市场监测:通过抓取特定关键词或标签下的视频数据,分析市场趋势,进行竞争对手分析。短视频平台数据类型:视频信息:包括视频标题、描述、标签、作者等。用户信息:包括用户的昵称、粉丝数、关注数等。互动数据评论数据:视频下的用户评论内容及用户信息。

2201_76125261的博客 3662

使用SAAJ发送和接收SOAP消息

在本技巧中,作者和开发人员 Nicholas Chase 向您展示了如何使用 SOAP with Attachments API for Java (SAAJ),从而简化创建和发送SOAP消息的过程。Web 服务的基础是以标准格式发送和接收消息,这样所有系统都可以理解消息。通常情况下,这种标准格式是 SOAP。SOAP 消息可以手工生成和发送,但 SOAP with Attachments A

ren_it的专栏 1068

【人工智能之深度学习】15. 工业时序预测实战:LSTM与TCN融合的装备故障预警系统设计与实现

摘要:工业装备故障预警是智能制造领域的核心技术之一,其通过分析传感器时序数据实现故障提前预测,可显著降低运维成本并提升设备可靠性。本文针对工业时序数据多源异构、非平稳性、噪声干扰及样本不平衡等挑战,提出一种LSTM与TCN融合的故障预警架构——利用TCN捕捉局部时序特征,结合注意力增强LSTM建模长期依赖关系,通过门控机制实现特征自适应融合。以3MW风电齿轮箱为研究对象,设计包含数据预处理、特征工程、模型训练及部署的完整流程,实验结果表明,该融合模型准确率达94.6%,故障预测提前量较单一模型提升30%以上

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1442

使用SAAJ 和JAXM的 SOAP客户端及服务

 sun公司的一个很好的学习平台: https://docs.huihoo.com/one_and_net/app7/12.1.htm#02   本模块讲述了如何使用用于JavaTM 的带附件的SOAP(SAAJ)和用于XML消息的Java TM API(JAXM)创建能够发送和接收消息的客户端,以及如何部署它们到Sun ONE Application Server上。本模块包括以下几节: ...

咖啡的博客 1339

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6652

如何使用 SAP ABAP Development Tool 连接 SAP BTP 上的免费 ABAP 编程环境

在云端环境编写 ABAP 代码会遇到一些限制,比如你无法在云端 ABAP 编程环境进行发生在传统 SAPGUI 里的 Dynpro 和 Screen 编程。部分在 SAPGUI 里使用的 List 处理相关的关键字比如 WRITE,还有 CALL TRANSACTION 等代码,也无法在云端使用。 当然如果大家觉得上面提到的这些限制不会影响自己的 ABAP 学习,就可以继续本文的阅读,使用 ABAP Development Tool 登录云端的 ABAP 编程环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1518

: 使用SAAJ发送和接收SOAP消息

技巧: 使用SAAJ发送和接收SOAP消息 Java API使得手工生成和发送消息时许多必需的步骤变得自动化 ...

a859501的博客 273

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 362

Web服务搜索与执行引擎(十)——细看SAAJ的使用

         看完上一篇blog:Web服务搜索与执行引擎(九)——初看客户端如何调用Web服务,我想我们对当前客户端如何调用Web服务的现状,无论是从高层接口的利用还是低层接口自己手动构建SOAP消息都有了最初步的印象了.接下来将要进行的是整个项目最核心的部分之一:服务的执行.我将为大家展示我们在项目中如何使用 SOAP with Attachments API for Java (SAAJ

贝高林的Blog 4738

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAAJ的使用方法

一、SAAJ简介 SAAJ(SOAP with Attachments API for Java)contains APIs for creating and populating SOAP messages which might or might not contain attachments. It also contains APIs for sending point t...

longcxm1的博客 1004

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SAAJ:SOAP with Attachments API for Java

SAAJ:SOAP with Attachments API for Java

听海边涛声 682

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

使用SAAJ访问soap

1.sopa1.1 package SAAJ.my; import javax.xml.soap.MessageFactory; import javax.xml.soap.MimeHeaders; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPConnection; import javax.xml.soap.SOAPCo

poijm 1692

SOAP 1.2

SOAP 1.2 与 GET 请求 SOAP 1.2 带来的变化进一步把 Web 服务编织到 Internet 的大网中。变化之一是 GET 方法的引入。GET 之所以重要是因为它支持各种优化。这一点已经过 Web 自身的验证,它广泛地使用 GET 方法。通过本技巧可以进一步了解这一点。 SOAP 1.0 发布以来,很多人曾经抱怨它对 HTTP POST 方法的依赖。许多人认为 SOAP 利用

JonnyWei的专栏 6140

用SAAJ1.2发送接收二进制Web服务内容

在写这篇文章的时候,大多数的Web服务由简单的信息交换组成:客户端连接到Web服务器端,并发送一条消息给服务端。Web服务端处理客户端的请求并发送回应给客户端。这个简单的请求/回应模式,模拟了HTTP协议帮助客户端/服务器端交互的过程。同样由于HTTP,Web服务信息的交换经常必须包含二进制的内容。比如图像,文档或者声音片段。这篇文章介绍了使用SAAJ1.2(SOAP with Attacheme

550

SAAJ-soap附件传递

Web 服务协议已经从支持带有简单参数的非常简单的请求,发展到对现代的面向对象语言的完整支持。XML-RPC 看来是 Web 服务的早期形式之一,仅仅支持简单类型 —— 字符串、整数、布尔值等等。SOAP 向前迈出了一步,有了用于对象的编码规则。最近的发展 —— 在二进制数据方面的改进 —— 来自带附件的 SOAP。 带附件的 SOAP 最初是作为 SOAP 1.1 的扩展提出的,得到了主流 SO...

avery-leo 246

java调用soap服务_如何从Java类调用SOAP Web服务?

我理解你的问题归结为如何从Java调用SOAP(JAX-WS)Web服务并获取它的返回对象。在这种情况下,您有两种可能的方法:>通过wsimport生成Java类并使用它们;要么>创建一个SOAP客户端:>将服务的参数序列化为XML;>通过HTTP操作调用Web方法;和>将返回的XML响应解析回一个对象。关于第一种方法(使用wsimport):我看到你已经有服务的(实...

weixin_39827728的博客 1446

解析:用SAAJ解决SOA集成问题

面向服务的架构(SOA)和面向服务的集成(SOI)得到了广泛的应用,并且有一种需求变得越来越明显:业务需要集成系统,并允许消费者利用基于标准的方法访问服务。SOA是一种架构范例。在这种架构中,可重用的业务逻辑表现为包含基于标准的、定义良好的接口的服务集,并且可以以松散耦合方式访问它。因为Web...

chenqunan3231的博客 86

SAAJ

SAOP

u014012083的专栏 461

SAAJ 入门

SAAJ(SOAP with Attachments API for Java) 是在松散耦合软件系统中基于SOAP协议利用XML传递消息的API规.   简单案例 发送SOAP工具类util.SOAPUtil.java package util; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBod...

iteye_5753的博客 307
上一篇: 关于23种设计模式的有趣见解(转)
下一篇: 基于JAX-RPC的快速Web服务开发方案(转)
Jofee
博客等级 码龄23年 14粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值