WEB开发网
开发学院软件开发Java 使用开放源代码框架的 Java 应用程序的 Web 服务集... 阅读

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 异步调用在异步调用中,客户机将消息发送到服务,使用开放源代码框架的 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:使用 开放 源代码

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