Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesCORBA's Object Transaction Service


April 1995 / Special Report / Client/Server with Distributed Objects / CORBA's Object Transaction Service

With support for nested and inter-ORB transactions, it's an object foundation for dealing with the complex world of multistep consumer-to-business and business-to-business transactions

Transactions are essential for building reliable distributed applications. So it should come as no surprise that transactions and distributed objects are getting married. OMG's (Object Management Group's) newly adopted OTS (object transaction service) defines IDL (interface definition language) interfaces that enable objects distributed across multiple ORBs (Object Request Brokers) to participate in atomic transactions, even in the face of catastrophic failure. It provides for interoperability between object transactions and procedural transactions that adhere to the X/Open DTP (distributed transaction processing) standard, and it optionally supports nested transactions. In short, it's an object foundation for dealing with complex, multistep consumer-to-business and business-to-business transactions.

An object involved in a transaction can assume one of three roles: transactional client, transactional server, or recoverable server (see the figure " The CORBA 2.0 Object Transaction Service ").

-- A transactional client issues a set of method invocations that are bracketed by begin/end transaction markers. The calls within the bracket may be for both transactional and nontransactional objects. You declare an object transactional in its IDL definition. The ORB intercepts the begin call and directs it to the transaction service, which establishes a transaction context associated with the client thread. The client then is sues method invocations on remote objects. The ORB implicitly tags the transaction context and propagates it in all subsequent communications among the participants in the transaction. The ORB also gets involved when the client issues a commit or rollback and notifies the transaction service. The client is oblivious to all this under-the-covers activity; it simply starts a transaction, issues its method invocations, and then commits or rolls back the transaction.

-- A transactional server is a collection of one or more objects whose behavior is affected by the transaction but have no recoverable states or resources of their own. The ORB implicitly propagates the transaction's context whenever these objects call a recoverable resource. A transactional server does not participate in the completion of the transaction, but it can force the transaction to be rolled back.

-- A recoverable server is a collection of one or more objects whose data (or state) is affected by committing or rolling back a transaction. Recoverable objects are transactional objects with ACID (atomic, consistent, isolated, and durable) resources to protect (see the table "The Four ACID Properties" in "Scale Up with TP Monitors"). They inform the transaction service that a recoverable resource has just joined the transaction whose context was propagated in the client call. Recoverable objects provide methods that are used by a transaction coordinator (i.e., the transaction service whose client originates the transaction) to orchestrate an ORB-mediated two-phase commit protocol.

OTS provides IDL-ized interfaces for the objects that make up the transaction service. So it is possible for clients and transactional objects to get more intimately involved in the details of the transaction via explicit method invocations. However, most transactions will depend on the ORB to transparently do all the work using its built-in facilities. Less intervention means better performance. OTS is a well-designed, low-overhead service that should perform at least as well as X/Open-compliant procedural transaction services.


The CORBA 2.0 Object Transaction Service

illustration_link (22 Kbytes)


Up to the Special Report section contentsGo to previous article: Is an Object Adapter a TP Monitor?Go to next article: ORB vs. RPCSearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network