| implement considering the transaction coordinator does not have full control over all the resources. 
										    Also, two-phase commit protocol involves one or other form of resource locking. Longer periods of 
										    resource locking will result in serious scalability issues. Therefore even though it is possible to use, 
										    extreme care should be taken to make sure that resources are not locked for long periods of time. 
										    The OASIS Business Transactions technical committee has released the Business Transaction Protocol 
										    (BTP) which extends the two-phase commit transaction management approach to address the 
										    needs of disparate trading partners that use XML to exchange data over the Web. BTP allows both 
										    the normal ACID transactions and non-ACID transactions (termed as “cohesions”) for long lasting 
										    transactions that span multiple enterprises. 										      Another approach called compensation is based on the idea that a transaction is always allowed to 
										      commit, but its effect and actions can be cancelled after it has committed. For example, it may be 
										      possible to order a shipment, and then later cancel the shipment if the required shipment process 
										      has not yet started. Canceling the shipment is an example of a compensating transaction; it 
										      compensates for the initial transaction that ordered the shipment. In compensating transaction, 
										      each “real” transaction has an associated “compensating” transaction. This “compensating” 
										      transaction element describes a way to revert changes done by the “real” transaction and return to 
										      a previous consistent state. If any transaction aborts, the caller executes the corresponding 
										      compensating transaction for all the transactions that have previously committed. Two major problems 
									        associated with compensating transactions are: Compensating transactions, unlike two-phase commit, may not satisfy all the four “ACID”
  properties at all times — this means there is always a probability for a failure.Traditionally designed two-phase commit transactions have to be redesigned to provide way
  for compensation.
 										      A simple method to measure response time of your Web services 										      A simple method to measure the performance characteristics of your Web services can be developed 
										      by adding a little bit of extra functionality in the service proxy. Service proxies in Web services are 
										      similar to stubs in Java RMI. They contain the code that is specific to a binding within the service 
										      interface, thereby hiding the complex network communications details from the client. For example, 
										      if the binding is a SOAP binding, then the service proxy will contain SOAP-specific code that can be 
									        used by the client to invoke the service. 										      The steps involved in developing a proxy capable of measuring response time is as follows: Generate service proxy from the WSDL service definition file.Modify the generated service proxy to add code to clock the time (see Listing 2).Re-compile the modified service proxy.Develop a client program to create a object of the service proxy and invoke the necessary
									        methods.
 										      Step 1: Generate a service proxy from service definition 										      Typically, service proxies are not written by the programmer. Service proxies can be easily generatedfrom the WSDL file. Web Service Toolkits (including the alphaWorks WSTK) provide tools to generate
 service proxies (see the sidebar). A sample WSDL service definition for an EchoService is given in
 Listing 1. This is a simple Web service, which echos back the original string with “Hello” appended to
 it.
 <?xml version=”1.0" encoding=”UTF-8"?><definitions name=”EchoService”
 targetNamespace=”http://www.echoserviceservice.com/EchoService-interface”
 |