WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院WEB开发Jsp 关于Apache Axis2的Web service消息 阅读

关于Apache Axis2的Web service消息

 2008-01-05 10:34:48 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤秴顪冮妶鍡楀闁告鍥х叀濠㈣泛谩閻斿吋鐓ラ悗锝庡厴閸嬫挻绻濆顓涙嫼閻熸粎澧楃敮鎺撶娴煎瓨鐓曢柟鎯ь嚟閳藉鏌嶇紒妯荤叆妞ゎ偅绻堥幊婊呭枈濡顏归梻鍌欑閹诧紕绮欓幋锔哄亼闁哄鍨熼弸鏃堟煛閸愶絽浜剧紓浣虹帛缁嬫挻绂掗敃鍌氱<婵﹩鍓﹂悗鎶芥⒒娴e摜锛嶇紒顕呭灦楠炴垿宕堕鍌氱ウ闁诲函缍嗘禍鏍绩娴犲鐓欓梺顓ㄧ畱婢ь垱銇勯弬鍨偓瑙勭┍婵犲洦鍊锋い蹇撳閸嬫捇寮借濞兼牕鈹戦悩瀹犲闁稿被鍔庨幉姝岀疀濞戞ḿ鐤呴梺鍦檸閸犳寮查幖浣圭叆闁绘洖鍊圭€氾拷
核心提示:到目前为止,web service交互作用是独立同步的,关于Apache Axis2的Web service消息,同时本质上是应答式的,不过,应答式消息可以表现四种方式的应答式消息1.双向In-Out 同步2.双向In-Out 异步3.单向In-Out 同步4.单向In-Out 异步下面的代码实例说明这些案例怎样被Ax

  到目前为止,web service交互作用是独立同步的,同时本质上是应答式的。不过,很显然同步应答类型在基于消息的应用中只是一个很小的子集。消息在耦合松散系统中是非常重要的,因此这种限制很要害。Web service规范,例如WS-addressing和WSDL,已经融入了消息的概念并且为包含一个相当大范围的消息应用奠定了基础。Apache Axis2 架构既不基于任一个消息交换模式,也不基于同步/异步行为。这篇文章解释了消息概念和Axis2在几种众所周知的消息场合中怎样被扩展使用。
  
  消息的简单介绍
  
  贯穿计算历史,分布式运算是其中的一个很大的挑战:当资源是分布式时,进程间的通信变得相当困难,研究人员仍然在寻找更好的解决方案。有趣的是,几乎所有关于分布式计算机计算能力问题的解决方案来源于两种概念基础: 远程过程调用(RPC) 和消息传递。
  
  毫无疑问,使用RPC在开发人员中是非常流行的技术,部分原因是是本地过程调用与它的类似之处。本地过程调用在程序员中很有人气,所以在分布式系统中使用RPC是很自然的选择,而另一方面,消息传递不是非常流行,当它被提起时很少有开发人员关注它。不过,在某些场合使用消息相比RPC系统有更好的优势。
  
  RPC和消息框架的基本差异如下所示:
  
  ●消息完全不懂客户端和服务器,因为一个消息框架(通常所说的面向消息的中间件,或message-oriented middleware,即MOM)集中于传递消息,所有接收和散发消息的节点身份平等,术语称之为对等体。RPC始终有服务请求者 (AKA client) 和服务提供者 (AKA server)的概念。
  
  ●消息对于一个特定范畴是时间独立的。没有任何对等体希望实时接收消息--当对等体可用时MOM关注于传递一个消息到相应的对等体,然而,RPC在失去一方时立即失效。
  
  ●消息可被复制并且轻易的传递到众多对待体。RPC本质上是一种一对一的交流方式,而消息更灵活,并且毫不费力地传递同一消息的拷贝到多种对等体。
  
  Web service消息
  
  Web service是在xml消息的基础上定义的,下面3个因素描述了一个给定的Web service的消息交互。
  
  ●消息交换模式
  
  ●同步和异步客户端API
  
  ●单向和双向传送行为
  
  从最抽象的角度来讲,,web service消息传递建立在发送和接收消息基础上,一个给定的消息被一方发出,并且被另一方接收。消息可能相互关联,识别这些相互关联的消息群中的最常见的应用场合是非常重要的,这些消息群被定义为消息交换模式(message exchange patterns),简称MEPs.
  
  过渡时期下在两种相关消息间的一个服务请求者的行为在客户端API定义了消息同步/异步行为。同步场合下,客户端请求将会阻塞,在相关消息到达目的地后前一直等待,在非阻塞场合下,客户端请求不会阻塞,当相关消息到达时,它与之前的消息相互联系。
  
  传送分类为单向或双向,基于单方或双方行为。类似SMTP和JMS传送即是单向传送的,不会阻塞,另一方面,类似HTTP和TCP即是双向传送,相关消息可能在回路中返回,实际上,在Web service消息中,双向传送可能被用作单向传送,但是在这些场合下,它们可被有效的处理为单向方式。
  
  消息交换模式
  
  根据W3C建议,消息交互模式就是一个为交流双方构建消息交换的一个模板,一个MEP将相关消息确定为一组。MEPs根据服务请求者和服务提供者来定义,需要注重,为了清楚,MEPs以服务提供者的消息特性来命名。为方便理解,所有的命名都可以用request代替in, 用response代替out。
  
  例如,我们看看两个有名的MEPS
  
  1.In-only/"发后不理:" 服务请求者发送消息给服务提供者但是不关心任何后继相关消息
  2.In-out/"应答式:" 服务请求者发送消息给服务提供者并希望返回结果
  
  MEPS概念仍在扩展中,模式的数目是没有限制的,所以Web service中间件应用强制使用几种选定的MEPs,"发后不理"和 "应答式" 是被明确使用的,其它大多数的模式可由这两种组合使用。
  
  客户端API同步/异步行为
  
  同步/异步(或阻塞/非阻塞)行为是基于在web service请求的线程,同步服务将会阻塞,等待相关消息到达。另一方面,异步请求仅仅返回,等待相关消息被后台另一个不同线程执行。
  
  这两种途径有典型的用例。考虑一下银行事务,其需要一定数量的消息来往返传递。银行事务本质是连续的,当结果到达时后执行下一步骤,因此同步等待结果很有意义。另一方面,设想一个航班预约程序,其需要搜集多种数据来源,根据这些结果再匹配。这个案例中,异步行为发挥作用,因为程序可以提交所有结果并且当数据到达时工作。考虑到网络响应,异步方式获得较好的结果。
  
  同步请求很简单:请求在相关消息到达前等待,并且可以像本地过程调用一样被编码。但是异步消息的相互关系就比较复杂,客户端必须处理这种复杂性。尽管如此,通过一些额外工作来处理这种复杂情况仍是必要的。
  
  传输层的行为
  
  传输层的行为是个要害因素,决定了Web service消息的发生,传输根据依据其行为分类为单向和双向。
  
  单向传送减少web service消息的复杂性,因为相关消息必须来源于各自的通道。另一方面,假如传送是双向的,消息有机会选择使用单向还是双向,例如,传输是HTTP时,相关消息来自HTTP连接的返回路径,或者这么讲web service提供者可以写HTTP 200来指出没有来自同一连接的响应,在这种案例下回应经由独立的HTTP连接发送。
  
  Web service寻址角色
  
  webs ervice寻址框架(也被称为WS-addressing)是为了在同一web service交互活动中交换不同信息部分,下面的5个因素定义了交互活动:
  
  1.消息交换模式
  2.可被访问的服务传送
  3.相关消息传送
  4.传送的行为
  5.客户端API的同步/异步行为
  
  服务提供者申明了头两个,客户端定义了其余因素,客户端级别的同步/异步行为对服务提供者是完全透明的,客户端使用WS-addressing来解释web service消息。
  
  在其它大多数结构中,WS-addressing定义了四种标题:To, ReplyTo, RelatesTo, FaultTo以及一个被称为匿名地址的特定地址,当一个服务提供者接收到SOAP消息时,它会查找在to地址上的目标服务并且调用服务。假如有结果,即被发送到ReplyTo地址,错误被发送到FaultTo地址,假如以上任一个的标题没有指定或具有匿名值,结果通过双向传送返回路径返回(因为匿名决定双向传送返回路径)。
  
  传送和WS-addressing一起定义了查找相关消息的机制,消息是相关缘于它们共享了相同的传送通道,也可能因为它们都共享把它们互相链接的公共信息。web service RelateTo标题正好提供了这种关系。
  
  下面的表显示的明确定义的消息交互活动的寻址标题的不同值
  
 关于Apache Axis2的Web service消息(图一)

  Axis2客户端API概念
  
  Axis2客户端API处理了In-Only和In-OutMEPs,所有的消息结合在下面的章节讨论。MEPs的空间是无限的,因此,Axis2强制提供了支持任意消息交换模式的核心,并且提供了两种常被使用的模式In-Only和In-Out的API,有两种方法实现更多的复杂模式:组合In-Only和In-Out来完成希望的模式,或者对希望的模式写新的扩展。因为Axis2为任意MEP提供核心级别的支持,实现是显而易见的。In-Only和In-OutMEPS被InOnlyMEPClient和InOutMEPClient类支持,下两节即做具体描述。
  
  In-Only MEP 支持: InOnlyMEPClient
  
  InOnlyMEPClient类对发送不理消息提供了支持,所有的传送类型作为单向传送对待,InOnlyMEPClient和InOutMEPClient真正的差别是寻址参数起先没有锁定,并且寻址参数随后被Axis2控制。作为可被控制的寻址参数,InOnlyMEPClient可被用作消息API,并且在此基础上构建更复杂的消息交互。
  
  In-Out MEP 支持: InOutMEPClient
  
  InOutMEPClient和继续了InOutMEPClient的调用类为应答式消息提供了支持,Axis2关注完整的操作,除了To地址外的所有的寻址属性都在Axis2的控制下
  
  用户可以配置InOutMEPClient 来表现不同,利用以下的四个参数。
  
  1.发送者传输
  2.监听者传输
  3.是用单独监听
  4.使用阻塞
  
关于Apache Axis2的Web service消息(图二)

  客户端API当前提供了针对HTTP和SMTP传输的支持,下面的表格显示了这些参数可能的组合以及它们怎样结合来提供不同特效。
  
  举例
  
  下面的代码实例显示了怎样使用Apache Axis2做几个定义明确的交互作用,用户可以在客户端API简单的转换属性从而转换不同的交互作用,客户端Axis2 API仅仅支持XML级别的消息和代表大块XML的OME元素。
  
  调用单向消息
  
  单向MEP简单之处在于在仅有一个消息往返传送时它能表现正确的单向,这些消息被异步对待并且传送是单向的。
  
  应答式消息
  
  可以表现四种方式的应答式消息
  
  1.双向In-Out 同步
  2.双向In-Out 异步
  3.单向In-Out 同步
  4.单向In-Out 异步
  
  下面的代码实例说明这些案例怎样被Axis2寻址,注重客户端API的四种属性怎样被使用。
  
  1.In-Out同步,HTTP作为双向传输方式
  
  OMElement payload = .... Call call = new Call();call.setTo(    new EndpointReference(AddressingConstants.WSA_TO,        "HTTP://...));call.setTranspo

Tags:关于 Apache Axis

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接