2011-06-15 96 views

回答

1

WS-AT由处理系统上Web服务的机制处理。例如,如果您在Windows上使用.NET,那么WS-AT由WCF处理,WCF使用Windows的分布式事务处理协调器(DTC)来协调事务。对于这显然它也依赖于WS-Coordination协议。

您确实需要为您的系统配置WS-AT。在Windows系统上,您可以使用WS-AT配置实用程序(另请参阅http://msdn.microsoft.com/en-us/library/ms732007.aspx)。

另请参阅WS-AT规格http://docs.oasis-open.org/ws-tx/wstx-wsat-1.1-spec-os/wstx-wsat-1.1-spec-os.html和WS-COOR规格http://docs.oasis-open.org/ws-tx/wscoor/2006/06

延伸阅读:http://searchsoa.techtarget.com/definition/WS-AtomicTransaction。尽管如此,请注意,实现WS-AT并非易事,而且通过异构系统有效协调事务需要很长时间(因此您需要配置系统以实现长时间的超时)。

+0

感谢您的回答。例如,如果我们正在谈论Java客户端和WCF服务之间的通信。 Java客户端如何知道协调器的地址?我没有在wsdl中找到任何引用。 – 2011-06-16 10:10:03

+0

我不熟悉Java,对不起。 – 2011-06-16 12:19:30

1

就协调而言,客户端(或者可能更准确/可能是控制服务)使用其本地交易技术(在WCF的情况下为MSDTC)启动交易。当向另一个服务发出请求时,在消息中发送一个WS-Coordination头,其中协调类型标识为WS-AT,协调ID(事务ID)和协调器地址(本例中为MSDTC)

0

一般交易协调员在客户端。当客户端调用事务Web服务必须包括SOAP头是这样的:

<wscoor:CoordinationContext 
    xmlns:wscoor="http://docs.oasis-open.org/ws-tx/wscoor/2006/06" 
    SOAP-ENV:mustUnderstand="1"> 
    <wscoor:Identifier>urn:0:ffffac1b0a40:46142b39:57ce82aa:1f57 
    </wscoor:Identifier> 
    <wscoor:CoordinationType>http://docs.oasis-open.org/ws-tx/wsat/2006/06 
    </wscoor:CoordinationType> 
    <wscoor:RegistrationService> 
     <wsa:Address>http://xxxx.yyyy.zz:8080/ws-c11/RegistrationService 
     </wsa:Address> 
     <wsa:ReferenceParameters> 
      <wsarj:InstanceIdentifier 
       xmlns:wsarj="http://schemas.arjuna.com/ws/2005/10/wsarj">0:ffffac1b0a40:46142b39:57ce82aa:1f57 
      </wsarj:InstanceIdentifier> 
     </wsa:ReferenceParameters> 
     <wsa:Metadata> 
      <wsam:ServiceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
       EndpointName="RegistrationPortType">wscoor:RegistrationService</wsam:ServiceName> 
     </wsa:Metadata> 
    </wscoor:RegistrationService> 
</wscoor:CoordinationContext> 

<wsa:Address>它指定事务协调注册服务的URL。