在本章我会向大家介绍下jax-ws到底是个什么东西,另外也会用jax-ws做个简单的示例给大家看看。
Java API for XML Web Services (JAX-WS)是Java程序设计语言一个用来创建Web服务的API。 JAX-WS是在
JAX-RPC 1.1的标准上实现的。JAX-RPC是 Java 方面的 Web 服务的原始标准。.
JAX-RPC 1.0 对 Web 服务功能的认识有一定的局限。从其名称可以看出,最初的目的是为了支持使用 XML 的
远程过程调用(Remote Procedure Call,RPC)操作。Java 当时已经有了一项面向 Java 应用程序间的 RPC 调用的现有技术,即
远程方法调用(Remote Method Invocation,RMI)。该规范团队选择了在现有 RMI 接口上对 JAX-RPC 进行建模。只要通过请求-响应操作使用
rpc/enc SOAP,此模型就可相当接近地进行匹配,不过映射到异步操作或其他传输的效果并不理想。到 2003 年底,有关人员认识到,总要对 JAX-RPC 进行大幅修订,以处理这些问题和其他问题,因此 Sun 组成了一个专家组开始进行 JAX-RPC 2.0 规范的开发。
JAX-RPC 2.0 开发工作的主要目标是对各项标准进行更新,以支持 JAX-RPC 1.X 的强制要求(基于 Java 5 特性,如 Annotation 和泛型),改进消息传递支持(包括除 HTTP 外的异步操作和传输),并通过使用 JAXB 2.0 绑定替代 JAX-RPC 1.X 的简单(但局限性很强)内置绑定来改进模式支持。出于对更改范围的强调和其他原因,这个后续标准的名称更改成了 JAX-WS 2.0。
JDK5中提供的是jax-ws 2.0。JDK6中提供的jax-ws 2.1 ,现在jax-ws已经步入2.2版本,JDK7中即可支持。
Java 中的webservice规范:
JAXM&SAAJ (比jax-ws暴露了更多底层的细节,例如可以更灵活的处理SOAP消息)
JAX-WS(JAX-RPC)
JAX-RS(针对
REST(表述性状态转移)式WebService 所制定的规范)
Jax-ws支持的数据类型
1:原始类型(任何Java支持的数据类型,如int);
Java原始数据类型 XML 数据类型
boolean xsd:boolean
byte xsd:byte
short xsd:short
int xsd:int
long xsd:long
float xsd:float
double xsd:double
注意:这里的原始数据类型中没有char类型。
我们知道,在Java语言中,每个原始数据类型都有一个对应的Object类,如int和Integer对应,
但事实上如果它们表示同一个整数时对于XML来说是一样的,所以XML把它们统一对待。
2:标准java类
Java Class XML 数据类型
java.lang.String xsd:string
java.math.BigInteger xsd:integer
java.math.BigDecimal xsd:decimal
java.util.Calendar xsd:dateTime
java.util.Date xsd:dateTime
javax.xml.namespace.QName xsd:QName
java.net.URI xsd:anyURI
(注意:xml时间类型的数据转换成JAVA对象为javax.xml.datatype.XMLGregorianCalendar)
3:由支持的Java类型组成的数组(Array)
JAX-WS支持由JAX-WS支持的数据类型组成的数组。比如int[],String[]等。多维数组同样可以被支持,比如:int[][],String[][]。
另外,byte[] 和 Byte[] 都映射为xsd:base64Binary 类型。
4:异常类
JAX-WS规定Web服务抛出的一样类必须直接或者间接从java.lang.Exception类继承,这个异常必须是可检查的异常(checked Exception),必须不能直接或者间接继承自java.lang. RuntimeException类。
异常和XML数据类型映射:
<complexType name="InvalidPointException">
<sequence>
<element name="message" type="string" nillable="true" />
</sequence>
</complexType>
可以看出,异常类实际上通过string类型来发送的,其实发送的string就是异常的
错误堆栈,在客户端获得XML形式的错误堆栈后,由可以通过这个错误堆栈重新构造一个新的异常类,它和服务端抛出的异常类是等价的。
5:JAX-WS值类型
JAX-WS值类型是能够在客户端和服务端点之间传递的Java类,它被映射为xsd:complexType。JAX-WS值类型必须遵守以下规则:
1:Java类必须提供默认的构造方法;
3:可以实现任何Java接口或者扩展自其它 类;
4:它可以包含公共的、私有的、受保护的字段,并且公共的字段必须是JAX-WS支持的数据类型;
5:Java类可以包含静态或者transient字段;
6:Java类可以包含一些方法;
7:Java类可能被设计成JavaBean。在这种情况下,JavaBean必须依照JavaBeans组件规则,为它的属性提供getter和setter方法;并且JavaBean的属性必须是JAX-WS支持的数据类型。
同时jax-ws还支持以下类型的序列化:
List(ArrayList、LinkedList、Stack、Vector);
Map(HashMap、HashTable、Properties、TreeMap);
Set(HashSet、TreeSet)。
JAX-RPC 1.1为什么会被取代?
JAX-RPC会被舍弃主要是因为它采用的rpc/enc格式来就行SOAP的编码。SOAP 规范中由style与use这两个属性决定SOAP数据的编码样式。 style属性可是两个值中的一个: rpc 或 document 。当属性被设定为文档样式时,客户端使用 XML 模式调用约定;当属性设置成rpc,客户端使用远程过程调用约定。use属性值决定消息的编码方式:可以是encoded或者是 literal。encoded值表示使用Section 5编码(SOAP规范第五章定义的编码)进行xml的序列化和反序列化。Literal值表示根据具体的Schema将内存对象序列化成XML消息。
rpc/enc样式的缺点是耦合度高,跨平台的支持不是很好,另外rpc/enc样式下的SOAP协议栈除了单纯的XML处理之外,还要处理SOAP编码的逻辑,还原多引用的对象图。所以没有doc/lit简单快捷。
因为最近几年rpc/enc遭受了不少质疑和反对声浪。在WS-I 基本概要1.1(WS-I Basic Profile Version 1.1)中,已经禁止使用这种编码样式。WS-I 基本概要1.1要求使用 WSDL SOAP 绑定的 RPC/literal 或 Document/literal形式。WS-I 基本概要禁止对 soap:Envelope 或派生的 soap:Body 元素使用 soap:encodingStyle 属性。因此, RPC/literal 和 Document/literal 是 WS-I 标准唯一支持的 2 种格式。
(有兴趣的同学可以自己详细了解下rpc/enc与doc/lit的区别,在这我只是简单讲下)
Document/literal wrapped
在标准Document/literal 方式下,程序员不得不处理所有的事务,包括基于 XML 的 SOAP 消息的序列化和逆序列化。标准的Document/literal不是面向RPC的,也没有定义与远程调用相关的信息,对仍然酷爱RPC调用的开发者来说无疑是欠缺的,在SOAP工具开发者看来Document/literal标准方式主要是缺乏函数的方法名。
于是微软提出了使用Document/literal模拟RPC的方法调用,定义了一种用特殊的Document/literal使用方法,有名称叫做Document/literal wrapped。其实就是故意在WSDL中定义一个复杂类型complexType节点,该节点的名称与远程调用的方法名相同,该节点把发送的所有参数再封装一层。这样,SOAP的开发工具可以在接受到XML消息的时候根据节点上的方法名将XML消息处理后分发到具体的处理函数中。
这种编码样式,兼顾了Document/literal和RPC的好处,具有更好的跨平台互操作性,目前许多类库都是采用这种方案,例如,大名鼎鼎的XFire。当然,这个方案肯定也有一些问题。
1、 这其实不是真正的RPC样式,方法名不能重载。
2、 WSDL文件比标准的Document/literal要复杂一些。
好了。。蹩脚的理论讲完了。现在做个简单的例子,我之所以选用jax-ws和XFire来做实例是因为myeclipse6.5及其以上版本都自带上面2个框架,非常容易创建项目。而且我觉得关于webservice的框架也不用学太多。因为webservice本身就是为了解决不同程序之间互相调用而产生。你完全可以不必理会你的服务器端或者客户端所用的webservice框架是否和你一样。能够熟练使用一种webservice框架进行webservice项目的开发就可以了。由于内容过长,所以讲示例放在第二小章。请大家谅解。

- 大小: 44.3 KB

- 大小: 93 KB

- 大小: 4 KB

- 大小: 78.7 KB

- 大小: 110.8 KB

- 大小: 14.6 KB
分享到:
相关推荐
- 考虑到Web服务的安全性,JAX-WS支持WS-Security标准,可以实现消息认证、加密和签名。 8. **测试**: - 使用工具如`wsimport`生成客户端代码后,可以编写测试用例来验证服务的正确性。 9. **ws_1文件**: - ...
#### 15.10 小结 通过本章的学习,开发者不仅掌握了使用XFire和MyEclipse开发Web服务的基础知识,还深入了解了Web服务的原理、开发流程和技术要点。无论是创建简单的“Hello World”服务,还是构建复杂的天气预报...
1、文件内容:sblim-gather-provider-2.2.8-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/sblim-gather-provider-2.2.8-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
本图书进销存管理系统管理员功能有个人中心,用户管理,图书类型管理,进货订单管理,商品退货管理,批销订单管理,图书信息管理,客户信息管理,供应商管理,库存分析管理,收入金额管理,应收金额管理,我的收藏管理。 用户功能有个人中心,图书类型管理,进货订单管理,商品退货管理,批销订单管理,图书信息管理,客户信息管理,供应商管理,库存分析管理,收入金额管理,应收金额管理。因而具有一定的实用性。 本站是一个B/S模式系统,采用Spring Boot框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得图书进销存管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高图书进销存管理系统管理效率。 关键词:图书进销存管理系统;Spring Boot框架;MYSQL数据库
2024中国在人工智能领域的创新能力如何研究报告.pdf
人脸识别项目实战
人脸识别项目实战
人脸识别项目实战
内容概要:本文档详细介绍了基于CEEMDAN(完全自适应噪声集合经验模态分解)的方法实现时间序列信号分解的具体项目。文中涵盖项目背景介绍、主要目标、面临的挑战及解决方案、技术创新点、应用领域等多方面内容。项目通过多阶段流程(数据准备、模型设计与构建、性能评估、UI设计),并融入多项关键技术手段(自适应噪声引入、并行计算、机器学习优化等)以提高非线性非平稳信号的分析质量。同时,该文档包含详细的模型架构描述和丰富的代码样例(Python代码),有助于开发者直接参考与复用。 适合人群:具有时间序列分析基础的科研工作者、高校教师与研究生,从事信号处理工作的工程技术人员,或致力于数据科学研究的从业人员。 使用场景及目标:此项目可供那些面临时间序列数据中噪声问题的人群使用,尤其适用于需从含有随机噪音的真实世界信号里提取有意义成分的研究者。具体场景包括但不限于金融市场趋势预测、设备故障预警、医疗健康监控以及环境质量变动跟踪等,旨在提供一种高效的信号分离和分析工具,辅助专业人士进行精准判断和支持决策。 其他说明:本文档不仅限于理论讲解和技术演示,更着眼于实际工程项目落地应用,强调软硬件资源配置、系统稳定性测试等方面的细节考量。通过完善的代码实现说明以及GUI界面设计指南,使读者能够全面理解整个项目的开发流程,同时也鼓励后续研究者基于已有成果继续创新拓展,探索更多的改进空间与发展机遇。此外,针对未来可能遇到的各种情况,提出了诸如模型自我调整、多模态数据融合等发展方向,为长期发展提供了思路指导。
监护人,小孩和玩具数据集 4647张原始图片 监护人 食物 孩子 玩具 精确率可达85.4% pasical voc xml格式
人脸识别项目实战
人脸识别项目实战
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
本届年会的主题是“青春梦想创新创业”。通过学术论文报告、创新创业项目展示、创业项目推介、工作研讨、联谊活动、大会报告等活动,全面展示大学生最新的创新创业成果。年会共收到491所高校推荐的学术论文756篇、创新创业展示项目721项、创业推介项目156项,合计1633项,为历届年会数量最高。经过36所“985”高校相关学科专家的初评以及国家级大学生创新创业训练计划专家组的复选,最终遴选出可参加本次年会的学术论文180篇,创新创业展示项目150个,创业推介项目45项,共计375项,涉及30个省市的236所高校。年会还收到了来自澳门特别行政区、俄罗斯的13项学术论文及参展项目。这些材料集中反映了各高校最新的创新创业教育成果,也直接体现了当代大学生的创新思维和实践能力。
人脸识别项目实战
6ES7215-1AG40-0XB0_V04.04.01固件4.5
在无人机上部署SchurVins的yaml配置文件
uniapp实战商城类app和小程序源码,包含后端API源码和交互完整源码。
基于MobileNet轻量级网络实现的常见30多种食物分类,包含数据集、训练脚本、验证脚本、推理脚本等等。 数据集总共20k左右,推理的形式是本地的网页推理
2024年央国企RPA市场研究报.pdf