分享
 
 
 

使用J2EE建立基于XML的网络服务(3)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

3.1.1 SOAP

当商业伙伴用UDDI寻找你的WSDL描述时,他们可以使用SOAP (Simple Object Access Protocol)调用你的网络服务一个或多个操作。

SOAP支持一系列诸如HTTP(S)和SMTP的底层协议,可用XML文档进行商业方法请求。使用XML是因为它是语言无关的、可扩展的和坚实的工业标准支持。使用HTTP是因为任何可以连通Internet的系统能够在端口上进行通讯,它是一个能够和任何系统交互的协议,而且它能利用80号端口通过防火墙设置。

SOAP的威力来自于它的简单。SOAP是轻量(lightweight)的且十分容易理解也容易实现的技术。它基于工业动力且被所有大的电子商务平台支持。

从技术的角度来说,SOAP规范了如何各种调用事务片(“call administrivia”)也规定了如何编码参数。一个SOAP envelope封装了可选的头部和主体信息。它通常通过HTTP的POST动作与HTTP服务器交互,也可以用其它形式来传输(如SMTP也是可以的)。SOAP同时支持消息发送和RPC调用的语义。

下面是一个被传送的SOAP调用:

POST /StockQuote HTTP/1.1

Host: www.stockquoteserver.com

Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn

SOAPAction: "Some-URI"

<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Header>

<t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">

5

</t:Transaction>

</SOAP-ENV:Header>

<SOAP-ENV:Body>

<m:GetLastTradePrice xmlns:m="Some-URI">

<symbol>SUNW</symbol>

</m:GetLastTradePrice>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

3.1.2 JAX/RPC

为了帮助开发者建立基于XML的请求,JCP正在开发Java APIs for XML based RPC (JAX/RPC)。JAX/RPC用于发送和接收诸如SOAP或者XMLP((XML Protocol,在http://www.w3.org/2000/xp/有详细信息)的过程调用。JAX/RPC让你从各种协议的繁文缛节中摆脱出来,提供快速开发的方法。这样就可以不在需要直接处理XML文档了。

现在有很多第三方的SOAP实现方案。开发者可以不同层次的自动化手段来进行开发,繁多的API把程序员缠住了。将来JAX/RPC会代替这些API,提供一个基于现在各种实现的统一的接口。JAX/RPC提供一个统一的接口来建立和处理RPC调用并且自动转换输入输出参数。

当从商业伙伴收到一个SOAP请求时,一个Java servlet使用JAX/RPC接收基于XML的请求。一旦请求被接收,servlet进行事物处理并返回结果给商业伙伴。

3.1.3 ebXML

为了更多的商业交互,需要在商业交互、多请求传输、纲要(schemas)和文档流的结构上达成协议。虽然SOAP提供你能建立扩展商业交互的一个底层的基础,但是你可能需要一个高级的框架来解决这些上述的问题。

这些是ebXML的目的,ebXML是一套XML规范和相关的处理和行为,它们被设计用来提供B2B的协作和集成的基本架构。它是一个全面的规范,能够为商家接受合作伙伴以及引导商业运作带来革新。下面是ebXML标准中关键的几个组成部分。

Collaboration Protocol Profile (CPP)

CPP描述一个公司提供一个标准的、可移植的方案。特别的,它描述一个公司支持的消息交互的能力和商业协作。它也描述公司的商业进度,包括合作伙伴如何与公司交互。CPP上一个有趣的面是商业合作包括B2B传输双方的两面。例如,在销售状态,CPP能够描述不止是销售进度和销售商的语义,而且还描述购买的进度和购买者的语义。

Collaboration Protocol Agreement (CPA)

CPA描述两个公司交互的精确机制和需求。它被手工或者自动由CPP的相关部分建立,它被双方检阅和达成协议。CPA成为双方的合同,它规定特定合作中接轨的方案(“rules of engagement”)。

CPP和CPA的例子和详细规范可以在下面地址找到:

http://ebxml.org/project_teams/trade_partner/cpp-example.xml

http://ebxml.org/project_teams/trade_partner/cpa-example.xml

http://www.ebxml.org/specs/ebCCP.pdf

商业进度和信息模型(Business Process and Information Modeling)

ebXML也包括用XML描述商业进度的规范。它包括传输、文档流、二进制合作数据封装格式以及更多。这些规范在建立CPP时被作者使用也被用于描述和共享商业进度和信息格式。

核心组件(Core Components)

ebXML标准的另一个至关重要的部分是一系列XML schema,也被叫做核心组件。这些schema包括商业数据的格式,例如日期、税收总量、帐目拥有者、交换合同等。它们是特定商业架构和实体,但是不和任何垂直工业(vertical industry)靠齐。

消息传送(Messaging)

ebXML消息传送是用所有相关的面向消息的中间件语义(如:同步/异步,可靠选项)封装消息的格式。特别的,一个ebXML消息传送代表一个可见的CPA的执行体,也拥有指定用来加强接轨的方案(“rules of engagement”)的特征。

ebXML消息传送建立在SOAP封装的消息传送调用(相对于RPC风格的调用)的基础之上。它加入分层的框架来支持附件、安全、和可靠发送从而扩展了SOAP协议。

注册表/知识库(Registry/Repository)

ebXML的注册表/知识库是存储CPP、CPA、ebXML核心组件以及其它ebXML文档和块的服务,它包括强大的查询能力帮助用户搜索相关组件和实质的商业伙伴。JAXR API也能够用于访问ebXML注册表。存储在ebXML注册表中CPP定义的商业服务能被发布到UDDI中。一个关键的概念是UDDI提供一个全局的单一的参照源,而ebXML知识库则提供一个局部的内部数据存储容器。因此,在广域网服务语义中,一个实际的商业伙伴会首先查找UDDI服务,它包括实际存储在ebXML知识库中的CPP或其它文档的引用信息。

3.1.4 JAXM

当收到一个商业伙伴的网络服务请求时,在我们的servlet中,如同我们用JAX/RPC处理SOAP请求一样我们需要一个Java API处理ebXML信息。

The Java API for XML Messaging (JAXM)是一个将要制订的规范,它用于与诸如ebXML消息和SOAP消息的XML消息标准。这个API被设计用于辅助XML消息协议的处理,特别是对于哪里原有定义的“合同”(ebXML是一个特例)来决定消息格式和消息约束。这个API会处理所有“封装(envelope)”信息。例如消息中的过程信息。这让开发者集中注意力于有效载荷的交互而忽略其它细枝末节。

虽然现在开发者可以使用JAXP来实现JAXM将提供的功能,JAXM能够提供一个专门用于基于XML的消息发送的API集。它会大量简化任务且为这类代码生成一个统一和标准的界面。

JAXM和JAX/RPC的差别就如同面向消息的中间件(MOM)和远程过程调用(RPC)的区别。JAXM被调整用于面向消息的中间件型应用程序,而JAX/RPC被专门设计用于RPC行为。图4显示了JAX/RPC和JAXM。

图 4 在一个servlet.m中使用JAXM和JAX/RPC

注意到在JAXM和JAX/RPC能够使用之前,开发者将依赖于第三方的SOAP API,诸如Apache SOAP,IdooXOAP和GLUE。当JAXM和JAX/RPC发布后,他们应该提供一个统一的接口来实现现在各种SOAP和ebXML消息传送。这类似于JDBC如何提供一个统一的接口来访问传统数据库引擎。

到此,我们完成了对商业伙伴连接到你的服务的讨论,下面,我们将讨论瘦客户和肥客户的连接。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有