WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院软件开发Java 使用开放源代码框架的 Java 应用程序的 Web 服务集... 阅读

使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式

 2009-11-05 00:00:00 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄妞ゆ劗鍘ч埥澶娢熼柨瀣偓濠氭⒑瑜版帒浜伴柛鎾寸☉閳绘柨顫濋懜纰樻嫼闂佸憡绋戦オ鏉戔枔閺冣偓缁绘稓浠﹂崒姘瀳闂佸磭绮幑鍥嵁鐎n亖鏀介柟閭﹀墯椤斿倹淇婇悙顏勨偓鏍ь潖婵犳艾鍌ㄧ憸蹇涘箟閹绢喗鏅搁柨鐕傛嫹
核心提示: 异步调用在异步调用中,客户机将消息发送到服务,使用开放源代码框架的 Java 应用程序的 Web 服务集成模式,第 1 部分: 实现调用模式(6),服务然后使用该消息,此时,在本系列的第 2 部分,我们将讨论 Web 服务中涉及的客户机端点可支持的其他两个集成模式,客户机并不会等待服务进行应答,

异步调用

在异步调用中,客户机将消息发送到服务,服务然后使用该消息。此时,客户机并不会等待服务进行应答。

如 WSDL 语法所定义的,单向操作仅具有输入元素。


清单 4. 单向操作的 WSDL
<wsdl:definitions> <wsdl:portType .... > * 
    <wsdl:operation name="nmtoken"> 
      <wsdl:input name="nmtoken"? message="qname"/> 
    </wsdl:operation> 
  </wsdl:portType > 
</wsdl:definitions>> 

可以通过使用 SOAP over JMS 实现异步调用。JMS 的缺省行为就是进行异步消息传递。


清单 5. 使用 SOAP over JMS 的单向 Web 服务客户机示例代码
 
// ... 
// provide JMS handler 
Call.addTransportPackage(packageName); 
Call.setTransportForProtocol( 
 "JMSTransport", 
 JMSTransport.class); 
// get client configuration 
EngineConfiguration defaultConfig = 
  (new  
        DefaultEngineConfigurationFactory()).getClientEngineConfig(); 
// create custom configuration for client 
SimpleProvider config = new SimpleProvider(defaultConfig); 
// get chain for given transport 
SimpleTargetedChain chain = 
 new SimpleTargetedChain( 
  new JMSSender(connectionFactory, destination)); 
  config.deployTransport("JMSTransport", chain); 
// create service using custom configuration 
Service service = new Service(config); 
Call call = (Call) service.createCall(); 
call.setOperation(super.getOperation()); 
// set JMS specific information (topic/queue name, context factory) in call 
// these values will be needed in chain for actually sending JMS message 
call.setProperty(JMSConstants.DESTINATION, destination); 
call.setProperty( 
 "transport.jms.ConnectionFactoryJNDIName", 
 connectionFactory); 
if (destinationDomain.equalsIgnoreCase("topic")) { 
 call.setProperty(JMSConstants.DOMAIN,  
      JMSConstants.DOMAIN_TOPIC); 
} 
if (destinationDomain.equalsIgnoreCase("queue")) { 
 call.setProperty(JMSConstants.DOMAIN, 
        JMSConstants.DOMAIN_QUEUE); 
 } 
call.setTransport(new JMSTransport()); 
 
// invoke the web service 
call.invoke(params); 
// ... 

WSIF 支持异步调用。可以通过调用 API 中的不同方法来使用 WSIF 客户机进行异步调用。


清单 6. 使用 WSIF 的单向 Web 服务客户机示例代码
 
// ... 
// create operation 
WSIFOperation operation = port.createOperation(   
   operationName, 
   inputMessage, 
   outputMessage); 
// prepare input 
WSIFMessage input = operation.createInputMessage(); 
// invoke web service one-way 
operation.executeInputOnlyOperation(input); 
// ... 

结束语

在本文中,我们对 Web 服务端点的请求-响应模式和单向模式进行了详细的讨论。而且说明,在标识了功能后,可以如何使用采用开放源代码框架的相应 Web 服务来支持这两种模式。在本系列的第 2 部分,我们将讨论 Web 服务中涉及的客户机端点可支持的其他两个集成模式,即要求-响应模式和通知模式。

上一页  1 2 3 4 5 6 

Tags:使用 开放 源代码

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