Magazine
 
Quick Review:Ajax
 
Understanding quality of service for Web services Improving the performance of your Web services

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 generated
from 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”

June 2008 | Java Jazz Up | 44
 
previous
index
next
 
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,

30
, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,   Download PDF