Jironde: A Flexible Framework for Making Components Transactional

It is generally agreed that one of the key services of component-based systems are transactions. However, an agreement on how components should be involved in transactions is still missing. In this paper, we discuss some of the key issues of combining components with transactions, and different approaches to achieve an appropriate level of transactional functionality in components. We distinguish between the explicit and implicit component participation approaches that differ by whether a component implements a part of transactional functionality or not. We discuss the influence of both approaches to concurrency control, recovery, and transaction context propagation. Then, we introduce our approach based on the use of several component controllers that manage transactional functionality on behalf of components. For a component, to be transactional, the only requirement is to fulfill a component contract which is specific to different transactional controller implementations. We provide an overview of a prototype implementation of our approach in the Fractal component model. Thanks to the flexibility and reflective nature of Fractal, it is possible to achieve different levels of component transactional functionality by combining different transactional controllers, with only taking their component contracts into account. Our work proves that with an appropriate component framework that supports reflection and flexible component management with clearly defined notions of component composition, lifecycle, and binding, we can make components transactional in an elegant and flexible way.

[1]  Jörg Kienzle,et al.  AOP: Does It Make Sense? The Case of Concurrency and Failures , 2002, ECOOP.

[2]  Dimitra Giannakopoulou,et al.  Model checking for concurrent software architectures , 1999 .

[3]  David Garlan,et al.  A Formal Approach to Software Architectures , 1992, IFIP Congress.

[4]  C LuckhamDavid,et al.  Specification and Analysis of System Architecture Using Rapide , 1995 .

[5]  Marek. Prochazka A Flexible Framework for Adding Transactions to Components , 2003 .

[6]  Marek Procházka,et al.  Container-Interposed Transactions , 2001 .

[7]  Frantisek Plasil,et al.  Behavior Protocols for Software Components , 2002, IEEE Trans. Software Eng..

[8]  Gustavo Alonso,et al.  Spontaneous Container Services , 2003, ECOOP.

[9]  Karl Obermayr,et al.  Component Object Model , 1994 .

[10]  Gustavo Alonso,et al.  Correctness in general configurations of transactional components , 1999, PODS '99.

[11]  Robert J. Allen A formal approach to software architecture , 1997 .

[12]  Gordon S. Blair,et al.  Arctic beans, configurable and re-configurable enterprise component architectures , 2001 .

[13]  Romain Rouvoy,et al.  Abstraction of Transaction Demarcation in Component-Oriented Platforms , 2003, Middleware.

[14]  Charlie Kindel,et al.  Distributed Component Object Model Protocol -- DCOM/1.0 , 1998 .

[15]  Marek Procházka,et al.  Advanced Transactions in Component-Based Software Architectures , 2001 .

[16]  Marek Prochazka Advanced Transactions in Enterprise JavaBeans , 2000, EDO.