In this paper, we present a flexible framework for extending a component model with transactions. We first discuss 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 interception pattern. We use several component controllers that manage transactional functionality on behalf of components. We identify several parts of transactional functionality that are implemented by different transactional controllers. For a component, to be transactional, the only requirement is to fulfill a component contract which is specific to various 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 add transactions to components in an elegant and flexible way.
[1]
Gustavo Alonso,et al.
Spontaneous Container Services
,
2003,
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.
Advanced Transactions in Enterprise JavaBeans
,
2000,
EDO.
[6]
Frantisek Plasil,et al.
Behavior Protocols for Software Components
,
2002,
IEEE Trans. Software Eng..
[7]
Chang Jun.
CORBA Component Model
,
2003
.
[8]
Romain Rouvoy,et al.
Abstraction of Transaction Demarcation in Component-Oriented Platforms
,
2003,
Middleware.
[9]
Douglas C. Schmidt,et al.
Patterns for concurrent and networked objects
,
2000
.
[10]
Gordon S. Blair,et al.
Arctic beans, configurable and re-configurable enterprise component architectures
,
2001
.
[11]
Charlie Kindel,et al.
Distributed Component Object Model Protocol -- DCOM/1.0
,
1998
.
[12]
Marek Procházka,et al.
Container-Interposed Transactions
,
2001
.
[13]
Marek Procházka,et al.
Advanced Transactions in Component-Based Software Architectures
,
2001
.
[14]
Gustavo Alonso,et al.
Correctness in general configurations of transactional components
,
1999,
PODS '99.