热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

详解XML-RPC和JAX-RPC

响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。本来的XML-RPC协议是由Web先锋DaveWiner于1998年在UserLandSoftware公司发明的。其第一个实现是在

响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。

本来的XML-RPC协议是由Web先锋Dave Winer于1998年在UserLand Software公司发明的。其第一个实现是在UserLand Frontier开发平台上(事实上,UserLand Software的商标就是"XML-RPC")。“在HTTP之上传输XML文本”方法的自然用处就是创立SOAP,这其中有Winer, Don Box以及其他微软公司人士的贡献。但是,SOAP由于很多对利用完整不必要得特征而变得非常重量级,所以XML-RPC还是值得留心的。

本来的XML-RPC只应用一些数据类型,并不需要名字空间。通过定义和包含其它值的类型,它获得了相当可观的机动性。下面是一个XML-RPC阐明书中的例子。它指定了示例利用程序中"getStateName"方法的输进参数。

以下为引用的内容:


  examples.getStateName
  
    41
  

你可能已经猜到这个标签表现4字节整数,下面是用于在标签中指定如何翻译内容的所有类型标签。假如没有应用任何标签,就认为是String值。留心,参数并没有被命名,元素的次序只和方法参数的次序一样。

以下为引用的内容:
Java Type  XML tag      Description
Integer   or    A 32 bit signed integer
Double        A double precision (64bit) signed floating point number
Boolean       0 (false) or 1 (true)
String        string
Date or   A timestamp in the ISO8601 style but simplified
Calendar            with resolution to the second.
byte[]        A base-64 encoded array of bytes
Map          Pair(s) of tags where the name is a string and
                the value can be any other type, including
Object[]        An array of objects where the elements can be any other type.


在原始的阐明书中,没有措施指明任何类型的“null”值,但扩大版本答应附加类型。

响应也是简略的XML文件,拥有根元素,或者有或者没有子元素。这与复杂的SOAP相应对照鲜明。

XML-RPC实现

xmlrpc.com上列出的实现给出了通往79个不同实现的链接,它们在各种语言中实现了基础的XML-RPC协议,包含5个2003年12月用Java语言实现的。但是,这些项目中很多都是停止的。而由Apache Web Services Project主持的项目则是活泼的。我尝试运行当前的3.0a1版本,却发明它对其它Web服务项目库有希奇的依附。看起来似乎Apache Web Services Project在开发3版本,所以假如你对开源XML-RPC解决计划感爱好,不妨对它多关注。

JAX-RPC: 针对XML RPC的Java API

最早的Java API要从JSR 101开端算起。这项工作从2001年初开端,到2002年年中达到1.0版本。2003年,宣布了1.1版本并附带在Java Web Services Developer Pack由Sun的参考实现。在JAX-RPC中,Java原始类型的定义与XML schema类型紧密相干。它还支撑更多的Java尺度库对象,例如,BigInteger 和 BigDecimal,以及符合JavaBeans尺度的对象。应用JSR 101的人可以并行开发SOAP和其它XML技巧。

Java Web Services Developer Pack (JWSDP)1.6版包含很多其它东西以及对JAX-RPC 1.1.3的一个实现。

JAX-WS 2.0:下一个JAX-RPC

该阐明书的下一个版本叫做JAX-WS 2.0,是针对基于XML的Web服务,用来代替JAX-RPC的Java API。该尺度被作为Java Specification Request (JSR) 224来开发,现在处于最后草案阶段。

JAX-RPC的下一个版本将明显下降Web服务开发的复杂性,部分通过应用Java 1.5尺度库的特征来实现。你可以跟踪网站上源码列表中的参考实现。至于本文,已经可以拜访第3版的参考实现。

应用JWSDP 1.6

JWSDP 1.6一个有用的功效就是对Web Services Description Language (WSDL)的支撑。假定有一个描写Web服务的WSDL文档,那么就可以主动天生拜访服务的客户端代码和支撑服务的服务器端代码。为了用一个简略的接口用来相应客户对已宣布的Web服务的恳求,我在JWSDP 1.6中用wscompile工具创立客户真个类,它们可以基于三四个输进参数来描写可能的动作。成果,几秒钟内就能创立惊人的32个类。

一旦我指出这些类中的哪些供给真正的创立恳求的起始点,那么编写代码实现简略的命令行接口就很简略了。而当我想运行程序时,标题随之而来。客户端需要从JWSDP中添加10个jar包到他自己的Java程序中。

由于不能帮大家一个一个调试这些jar包与其它Java程序的埋伏冲突,我放弃这种做法,转而用string模板写一个简略的程序来创立SOAP恳求和XPath来翻译返回的成果。就像其名字一样,我认为JWSDP将重要用于创立Web服务,而不是花费Web服务。

XML-RPC还有用吗?

JAX-RPC的复杂性导致程序员的某种倒退。从Google中搜索"JAX-RPC complexity"就能看到一些用户的反应。我想你应当在以下情况考虑XML-RPC而不是JAX-RPC:

你的利用程序只需相对简略的恳求

你能把持服务器端和客户端,你不需要宣布WSDL

你想简略的解析客户端(就像AJAX利用程序)




推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • Apache Maven 3.5.0 版本的发布带来了多项重要特性和性能优化。该版本不仅改进了构建过程的效率,还增强了对复杂项目结构的支持。通过引入新的依赖解析机制和优化的插件系统,Maven 3.5.0 在提升用户体验的同时,也确保了更高的稳定性和兼容性。此外,该版本还修复了多个已知问题,进一步提升了整体的可靠性和安全性。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 在Laravel中实现PHP对JSON数据的发布与处理 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 在Maven项目中高效集成JaCoCo代码覆盖率插件,以显著提高测试质量。首先,需在项目的`pom.xml`文件中添加JaCoCo和JUnit的依赖配置,确保测试框架和覆盖率工具的无缝结合。通过这种方式,开发者不仅能够执行单元测试,还能获取详细的代码覆盖率报告,从而优化测试策略和代码质量。 ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
author-avatar
工农大路店NOKIA客户服务中心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有