FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software

Size: px
Start display at page:

Download "FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software"

Transcription

1 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software Vicraj Thomas, Andrew McMullen, and Lee Graba Honeywell Laboratories, Minneapolis MN 55418, USA Vic.Thomas@Honeywell.com Abstract. FT-Java is a Java language based framework for building fault-tolerant distributed software. It is designed to bring to the system programmer much of the flexibility provided by reflective languages and systems without the attendant difficulties of reasoning about correct system structure. FT-Java achieves this by providing the programmer an extremely flexible programming model with sufficient structure to enable reasoning about the system. The FT-Java framework in turn uses the power of reflection to implement the programming model. 1 Introduction An increasing number of mission-critical distributed systems are being developed using the Java programming language. Examples range from aerospace applications such as portions of the software on NASA s Mars Pathfinder and Odyssey missions to financial applications such as the Den norske Bank s Internet banking facility. Its use in critical applications will only increase as implementations of the Real-Time Java Specification [3] become available. FT-Java is a Java language framework for building fault-tolerant distributed software software that must continue to provide service in a multicomputer system despite failures in the underlying computing platform. The framework supports a variety of fault-tolerance design patterns (software structuring techniques) because Java is used to build a variety of different types of systems; different patterns are appropriate for different types of systems or even different parts of the same system. FT-Java recognizes the expressive power of reflection [4] in building systems that support a variety of fault-tolerance design patterns. FT-Java also recognizes reflection can be a double-edged sword: the same flexibility that allows for the implementation of different system structures also allows for the system to be structured in many incorrect ways. This flexibility also makes it very difficult to reason about the runtime behaviour of such systems. FT-Java provides system developers with a framework that reaps the benefits of reflection and yet imposes sufficient structure to permit reasoning about program behaviour. This is achieved by means of a programming model that shields developers from the complexities of reflection while still being flexible R. Meersman and Z. Tari (Eds.): OTM Workshops 2003, LNCS 2889, pp , c Springer-Verlag Berlin Heidelberg 2003

2 900 V. Thomas, A. McMullen, and L. Graba enough to use a variety of fault-tolerance design patterns. The FT-Java framework itself uses reflection to provide this flexible programming model but this reflection is not visible to system developers. FT-Java supports the fail-stop modules programming model [12]. This model supports diff-erent fault-tolerance design patterns including replicated state machines [13] and restartable actions [11]. FT-Java uses Java reflection to implement this programming model. It does not require any extensions to the Java language or runtime and is therefore easily deployed on any system with a standard Java virtual machine. 2 The Fail-Stop Modules Programming Model The fail-stop failure model for processors [11] has proven to be a very convenient abstraction for analyzing the behaviour of distributed systems in the face of processor failures. This model assumes processors produce correct results until they fail and the failure of a processor is detectable by other functioning components. The fail-stop modules programming model extends this abstraction to software modules. A fail-stop module (or FS module) is an abstract unit of encapsulation. It implements a collection of operations that may be invoked by other FS modules. When an operation is invoked it executes to completion as an atomic unit, despite failures and concurrent invocations. The failure resiliency of an FS module is increased either by composing modules to form complex FS modules, or by using recovery techniques within the module itself. Replicating a module N times on separate processors to create a high-level abstract module that can survive N 1 failures is an example of the former, while including a recovery protocol that reads checkpointed state is an example of the latter. A key aspect of FS modules is failure notification. Notification is generated whenever a failure exhausts the redundancy of a FS module, resulting in a failure of the abstraction being implemented. The notification can be fielded by other modules that use the failed module so they can react to the loss of functionality. The failure notification and composability aspects of FS modules are what makes this programming model so useful. Ideally, a fault-tolerant system as a whole behaves as an FS module: commands to the program are executed atomically or a failure notification is generated. This assures users that, unless a failure notification is generated, their commands have been correctly processed and any results produced can be relied upon. Such a program is much easier to design and implement if each of its components are in turn implemented as FS modules. Since the failure of any component is detectable, other components do not have to implement complicated failure detection schemes or deal with the possibility of erroneous results produced by failed components. These components may in turn be implemented by other FS modules, and this process continued until the simplest components are implemented by simple FS modules. At each level, the guarantees made by FS modules simplify the composition process [12]. The fail-stop module programming model does not assume fail-stop semantics for the underlying computation platform. The responsibility of detecting

3 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software 901 platform failures is delegated to failure detectors. Different types of failure detectors are used depending on the failure model assumed for the computation platform. 3 FT-Java Overview In the FT-Java framework FS modules are Java classes that extend an abstract class FSObject. Operations on FS modules are implemented as methods on one or more FSInterface interfaces. The atomicity of execution of operations may be ensured by using Java s synchronized modifier on methods of the FSInterface interfaces. Complex FS modules with greater failure resilience are formed by composing other FS modules. In addition to standard Java composition techniques such as object containment and delegation, FT-Java allows FS modules to be composed by replication. Multiple instances of an FS module may be composed as a group with FT-Java providing the illusion the group is a single FS module. Operations invoked on the group are multicast to all members of the group and failure notifications are generated when all group members have failed. Finally, complex FS modules may also be implemented using the restartable actions pattern [11] where failed modules are restarted from checkpointed state. Two kinds of failure notifications may be generated when an FS module fails: (1) a synchronous notification, generated when a method is invoked on the failed FS module and (2) an asynchronous notification that is generated even if no method is being invoked on the failed module. Synchronous failure notifications are implemented as Java exceptions all methods on FSInterfaces throw an exception that must be caught or propagated by callers of these methods. Asynchronous failure notifications follow the event subscriber model used by Java Swing components. Modules ask to be notified of the failure of an FS module by invoking its addfailurelistener method. This method takes as an argument a FailureListener interface; the failureevent method on this interface is invoked when the FS module fails. 4 Programming with FT-Java 4.1 Defining and Creating FS Modules All FS modules in FT-Java inherit from an abstract class FSObject. An FS module s class is not expected to implement any methods defined by the base class FSObject. However, the constructor of the FS module s class is expected to make a stylized call to the base class constructor. This is illustrated in Fig. 1 that shows a simple FS module. FS modules are created by invoking the newinstance method of the FT- Java class FSObject. The following statement demonstrates the creation of an instance of the BankAccountImpl FS module on a host named Caesar.

4 902 V. Thomas, A. McMullen, and L. Graba class BankAccountImpl extends FSObject implements BankAccount { private int currentbalance = 0; /* class constructor */ public BankAccountImpl(ActivationID actid, MarshalledObject args) throws RemoteException { super(actid, args); /* method from interface BankAccount */ public synchronized int makedeposit(int deposit) throws RemoteException { currentbalance += deposit; return currentbalance; /* implementations of other methods */... interface BankAccount extends FSInterface { public synchronized int makedeposit(int deposit) throws RemoteException;... Fig. 1. A simple FS module BankAccount custaccount = (BankAccount)FSObject.newInstance("BankAccountImpl", new String[] {"Caesar"); The first argument to newinstance is the name of class of the FS module and the second argument is an array with the name of the host on which the FS module is to be created. Of course, the name of the host would typically not be programmed into the application but would instead be obtained from a configuration application, file or database. The newinstance method is also used to create a new FS module by composing other FS modules by replication. The following statement shows the creation of a more failure resilient version of the BankAccountImpl FS module by creating instances on two different hosts. BankAccount custaccount = (BankAccount)FSObject.newInstance("BankAccountImpl", new String[] {"Caesar", "Czar");

5 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software 903 The first argument is the class of the FS module and the second argument is an array of names of hosts on which instances are to be created. Note the reference to the replicated group returned by the newinstance method is indistinguishable from a reference to a single object instance. 4.2 Invoking Methods on FS Modules A method invocation on an FS module is no different from a method invocation on a regular Java object. This is true regardless of whether the FS module is replicated or not. The following code fragment shows the invocation of the method makedeposit on the BankAccount FS module created in the previous section. try { custaccount.makedeposit(100); catch (RemoteException e) { System.err.println("Invocation failed... ); Note that all methods on FS modules can throw a RemoteException. This exception must therefore be caught or propogated. 4.3 Failure Notification Asynchronous notification of the failure of an FS module is obtained by registering a failurelistener for the module by invoking its addfailurelistener method. Declaration and implementation of the addfailurelistener method is transparent to the FS module developer as it is defined on an interface implemented by the FSObject base class. The following code fragment illustrates the creation and registration of a failure listener for the FS module used in previous examples. custaccount.addfailurelistener(new FailureListener { public void failureevent() { System.out.println("BankAccount object failed."); In the case of an FS module composed by replication, failure notifications are generated only when all instances have failed. A synchronous failure notification is generated when a method invocation on an FS module fails or if a method is invoked on a failed FS module. This failure notification is a Java exception that must be caught and handled using the Java try/catch statement, as shown in Sect. 4.2.

6 904 V. Thomas, A. McMullen, and L. Graba 5 FT-Java Implementation 5.1 Overview FT-Java is implemented using version of the Java Platform Standard Edition. It is implemented as a faulttolerance Java package. The implementation of FT-Java makes extensive use of the Java Reflection API [2] and the Java Remote Method Invocation (RMI) package [6]. The Java Reflection API includes a Proxy class that provides methods for creating dynamic proxy classes and instances. A dynamic proxy implements a list of interfaces specified when the proxy instance is created. Associated with the proxy instance is an invocation handler object. Invocations on the dynamic proxy are dispatched to the invoke method of the invocation handler object. This handler processes the method invocation as appropriate and the result it returns is returned in turn as the result of the method invocation on the dynamic proxy instance [14]. As described later in this section, all invocations on FT-Java FS modules go through a dynamic proxy that is co-located (in the same Java virtual machine) with the caller. The Java RMI package is used to support distributed object creation and invocation. The package defines an Activatable class whose subtypes can be created remotely and activated on demand. It also defines a Remote interface; all remotely invocable interfaces must inherit from this interface. As described later in this section, all FS modules are a sub-type of the Activatable class and all FSInterfaces inherit from the Remote interface. The FT-Java architecture is shown in Fig. 2. Three services run on all hosts of a FT-Java system: the Java RMI Registry, the Java RMI Daemon, and a fault-tolerance manager. The RMI Registry and RMI Daemon are part of the standard Java platform; the former is the Java name service and the latter supports the creation of new Java virtual machines (JVM) at runtime and the creation of Java objects in JVMs on the request of objects in other JVMs. The fault-tolerance manager service, called the HostFTManager, is responsible for managing the Java virtual machines on the host. It uses the Java RMI Daemon to create new virtual machines and monitors these virtual machines for failure. Associated with the HostFTManager service is a detector for failure of other hosts in the system. The failure detector to be used is specified as a system parameter when the HostFTManager service is started up. FT-Java allows multiple applications to co-exist. An application is a collection of related Java objects. On a given host an application is a process consisting of a JVM and all the objects on that host that belong to that application. By default, an FS module is created in an application of the same name as the creator of the FS module. This can be overridden by a parameter on the FSObject.newInstance method used to create FS modules. 5.2 FS Module Creation The newinstance method on FSObject used to create FS modules takes as arguments the Java class name for the FS module, a list of hosts on which

7 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software 905 Host 1 Host 2 VM for App 1 VM for App 2 VM for App 1 VM for App 2 FS Modules FS Modules Host Failure Detector RMI Daemon Host Failure Detector RMI Daemon RMI Registry RMI Registry HostFTManager HostFTManager Fig. 2. FT-Java Architecture instances of the FS module are to be created, a list of backup hosts on which new instances are to be created if an active instance fails, and the name of the application that owns the FS module. Not all of these parameter values have to be specified reasonable defaults are used for unspecified parameter values. The following are the major steps executed by FSObject.newInstance. 1. For each host on which an instance of the FS module is to be created: a) Use the Java name service (RMI Registry) to find the HostFTManager on the host. b) Invoke the createobject method on the HostFTManager with the application name and class name of the FS module as parameters. The HostFTManager.createObject() method on the host on which the FS module is to be created executes the following major steps: i. Determine if a JVM already exists for the application on that host. ii. If a JVM does not already exist, create one using the activation services provided by the Java RMI daemon. iii. Activate an instance of the FS module class and return a reference to the instance. (The instance will actually be instantiated on the first invocation on the object.) c) Save reference to instance returned by HostFTManager.createObject 2. Use the Java reflection API to get a list of all FS interfaces (interfaces of type FSInterface) implemented by the FS module. 3. Create a dynamic proxy with the above FS interfaces. 4. Return reference to the proxy.

8 906 V. Thomas, A. McMullen, and L. Graba Client FSObject Client FSObjectProxy Client FSObjectProxy VM 1 VM 2 VM 3 Fig. 3. Method invocations on an FSObject intercepted by FSObjectProxy objects 5.3 Invocations on FS Modules A method invocation on an FS module is essentially a method invocation on a local proxy to the FS module. The proxy class delegates all invocations to a handler called FSObjectProxy. The handler maintains a list of references to all object instances that comprise the FS module. The handler invokes the appropriate method on all of the object instances and returns to the caller the value returned by one of the invocations. Figure 3 shows the invocation of a method on an FSObject instance via FSObjectProxy instances. 5.4 Registering for Failure Notifications Any object can ask to be notified of the failure of an FS module by invoking the addfailurelistener method on the FS module. This method is defined on a FailureNotification interface. The FSObject class implements this interface and since all FS modules inherit from FSObject they automatically implement the FailureNotification interface. The addfailurelistener method takes as its argument a FailureListener interface. The failureevent method on this interface is invoked on the failure of the FS module for which it is a listener. Invocations of addfailurelistener method on an FS module are handled differently from invocations of other methods on the FS module. As with other invocations, this method invocation is delegated by the module s proxy to its FSObjectProxy handler object. The handler notices the addfailurelistener method is being invoked and performs the following steps: 1. For each instance of this FS module: a) Create an InstanceFailureHandler object to handle failures of this instance. b) Ask the local HostFTManager for notification when the remote host on which the instance exists fails by invoking its addhostfailurelistener method with the InstanceFailureHandler object and the remote host name as arguments.

9 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software 907 c) Use the Java name service (RMI Registry) to find the HostFTManager of the remote host on which this instance of the FS module lives. d) Ask the remote HostFTManager for notification of the failure of the application (JVM) of the instance by invoking its addvmfailurelistener method with the InstanceFailureHandler object and application name as arguments. 5.5 Failure Detection and Notification Failure Detection. FT-Java uses two levels of protocols to detect the failure of FS modules: one to detect failures of Java virtual machines and another to detect failures of hosts. Each HostFTManager is responsible for detecting the failure of virtual machines for applications on its host. A simple heartbeat protocol between the HostFTManager and an AppFTManager in each of the virtual machines is used to detect these failures. A second protocol is used to detect the failure of hosts in the system. Associated with each HostFTManager is a HostFailureDetector responsible for monitoring the health of other hosts in the system. FT-Java does not dictate a host failure detector protocol: it is designed to accommodate different failure detectors depending on the failure semantics of the host compute platform. The class name of the specific failure detector to be used is specified as a system parameter; this class must be of type HostFailureDetector. A simple heartbeat based protocol that assumes a crash failure model for hosts is distributed with FT-Java. Failure Notification. An FS module instance fails when the virtual machine on which it is executing fails or when the host on which it is executing fails. When a HostFTManager detects the failure of a virtual machine on its host, it invokes the failureevent method on all of the registered InstanceFailureHandlers for all FS modules on the failed virtual machine. Recall these failure handlers were registered by proxies for these FS modules using the addvmfailurelistener method of the HostFTManager. These proxies may be on any host in the system. When a HostFTManager is informed of the failure of a host in the system, it invokes the failureevent method on all registered InstanceFailureHandlers for all FS modules on the failed host. Recall these failure handlers were registered by proxies local to this HostFTManager by invoking its addhostfailurelistener method. A client that asked to be informed when an FS module fails is notified only when all instances of the FS module have failed. When an instance of an FS module fails, InstanceFailureHandlers for the instance are notified as described above. The InstanceFailureHandlers simply mark the instance as having failed. The failureevent methods of the FailureListeners for the FS module are invoked only when all instances of the FS module are marked as having failed.

10 908 V. Thomas, A. McMullen, and L. Graba A synchronous failure notification (Java exception) is raised when a method in invoked on a failed FS module i.e. all instances of the FS module are marked as having failed. 5.6 Managing State Consistency across Replicated FS-Modules A future version of FT-Java will include better support for managing state consistency across replicated objects. We have designed a scheme that enables the easy insertion of any group message ordering protocol to manage state consistency. In this scheme, shown in Fig. 4, message ordering protocols are implemented as dynamic proxies (GroupProxy objects) that front instances of a replicated FS module. An invocation on a FS module instance is trapped by its GroupProxy. The proxy communicates with other corresponding GroupProxy instances to agree on a consistent message order. All GroupProxy instances pass invocations on to their corresponding FS module instances in the agreed upon order. Note that the message ordering protocol is completely transparent to the FS module being replicated and to the clients that invoke methods on the FS module. 5.7 Performance The overhead associated with invoking a method on an FS module via the dynamic proxy over a direct invocation on a remote object was found to be less than one millisecond, the granularity of Java s standard timing mechanism. The Client GroupProxy FSObject FSObjectProxy VM 1 Ordering Protocol VM 2 Client GroupProxy FSObject FSObjectProxy VM 3 VM 4 Fig. 4. Scheme for implementing message ordering protocols

11 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software 909 time to directly invoke a method on a remote FS module was 3 milliseconds. Going through the proxy did not measurably increase this invocation time. The above times were measured by having a client repeatedly invoke a method on an FS module on a different node. The nodes were 1.2GHz Pentium III class machines running Windows XP and connected by an 11Mbps wireless Ethernet network. 6 Related Work Many research projects have explored the use of reflection for building faulttolerant systems. These projects define meta-objects that reify dependability related properties of the functional objects (or base objects) of the system. They also define a meta-object protocol (MOP) for manipulating these meta-objects to modify the runtime behaviour of corresponding base objects. Maud [1] uses reflection to allow a running system to dynamically switch between different dependability modes of execution by installing and removing dependability protocols. The FRIENDS project [5] showed how MOPs may be used to implement a number of fault-tolerant mechanisms including replication, synchronization, and voting. A MOP for a fault-tolerant CORBA system is described in [8]. In contrast with the above reflection based systems, FT-Java shields the system developer from the complexities of MOPs. In fact, the developer does not have to know anything about reflection and MOPs to use the FT-Java framework. The programming model seen by the developer is the fail-stop modules programming model; reflection allows for a simple and elegant implementation of support for this model within FT-Java. Systems that provide mechanisms for creating highly-available modules by replication include the Object Management Group s Fault-Tolerance Specification for CORBA [7] and the Aroma System [10]. The fault-tolerance specification for CORBA defines a programming language independent mechanism for deploying highly-available applications. It provides mechanisms for replicating CORBA servers but, unlike FT-Java, it does not define a general programming model for building highly-available applications. The fail-stop module programming model of FT-Java is such a model with replication being just one technique for building fault-tolerant software. In addition, the FT-Java framework helps system designers reason about the structure and behaviour of the system and requires them to deal with both anticipated and unanticipated failures of system modules. The Aroma System [10] provides mechanisms for creating and managing replicated Java RMI objects. It differs from FT-Java in two significant ways: (1) it is implemented as a software layer embedded within the transport layer of the Java RMI stack, and (2) it does not provide system designers a framework that supports fault-tolerance techniques other than replication. In contrast, FT- Java requires no extensions to the Java language or virtual machine and supports programming paradigms such as restartable actions in addition to replication.

12 910 V. Thomas, A. McMullen, and L. Graba 7 Summary and Future Work FT-Java provides developers of Java-based fault-tolerant software systems a structured way of harnessing much of the power of reflective systems. Its mechanisms integrate well with existing Java constructs, making them easy to learn and use. FT-Java does not make any extensions to the Java language or runtime. Much of the implementation of FT-Java is complete and is available as a Java package called faulttolerance. Two major FT-Java features that have been designed but have yet to be implemented are the restart of failed FS modules on backup hosts and the detection of the failure of an application (JVM) on a host. Future versions of FT-Java will include better support for managing state consistency across replicated FS module as described in Sect A related direction for this work is support for other replication models such as passive replication. An orthogonal direction is the verification of our hypothesis that the fail-stop failure model seen by the programmer can be maintained even if the host failure model changes from crash failures to Byzantine failures [9]. Naturally, a different host failure detector protocol will be needed for different failure models but this is hidden from the programmer. References 1. G. Agha, S. Frølund, R. Panwar, and D. Sturman. A linguistic framework for dynamic composition of dependability protocols. In Proceedings of the IFIP Conference on Dependable Computing for Critical Applications, Sicily, K. Arnold, J. Gosling, and D. Holmes. The Java TM Programming Language, Third Edition, chapter 11. Addison-Wesley Publishing Company, June G. Bollela, J. Gosling, B. Brosgol, P. Dibble, S. Furr, and M. Turnbull. The Real- Time Specification for Java. Addison-Wesley Publishing Company, January F.-N. Demers and J. Malenfant. Reflection in logic, functional and object-oriented programming: a short comparative study. In Proceedings of the IJCAI 95 Workshop on Reflection and Metalevel Architectures and their Applications in AI, pages 29 38, August J.-C. Fabre and T. Perennou. A metaobject architecture for fault-tolerant distributed systems: The FRIENDS approach. IEEE Transactions on Computers, 47(1): 78 95, W. Grosso. Java RMI. O Reilly and Associates, October Object Management Group. Common Object Request Broker Architecture: Core Specification, chapter 23. Object Management Group (OMG), December M.-O. Killijian and J.-C. Fabre. Implementing a reflective fault-tolerant CORBA system. In Symposium on Reliable Distributed Systems, pages , L. Lamport, R. Shostak, and M. Pease. The Byzantine generals problem. ACM Transactions on Programming Languages and Systems, 4(3): , July N. Narasimhan, L. Moser, and P. Melliar-Smith. Transparent consistent replication of Java RMI objects. In 2nd International Symposium on Distributed Objects and Applications (DOA 2000), pages 17 26, September 2000.

13 FT-Java: A Java-Based Framework for Fault-Tolerant Distributed Software R. Schlichting and F. Schneider. Fail-stop processors: An approach to designing fault-tolerant computing systems. IEEE Transactions on Computing Systems, 1(3): , August R. Schlichting and V. Thomas. Programming langauge support for writing faulttolerant distributed systems. IEEE Transactions on Computers, 44(2): , February F. Schneider. Implementing fault-tolerant services using the state machine approach: A tutorial. ACM Computing Surveys, 22(4): , December Sun Microsystems. Java TM 2 Platform, Standard Edition, v 1.4.1, API Specification,

Reflective Java and A Reflective Component-Based Transaction Architecture

Reflective Java and A Reflective Component-Based Transaction Architecture Reflective Java and A Reflective Component-Based Transaction Architecture Zhixue Wu APM Ltd., Poseidon House, Castle Park, Cambridge CB3 0RD UK +44 1223 568930 zhixue.wu@citrix.com ABSTRACT In this paper,

More information

Chapter 5: Distributed objects and remote invocation

Chapter 5: Distributed objects and remote invocation Chapter 5: Distributed objects and remote invocation From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 Figure 5.1 Middleware layers Applications

More information

Lecture 06: Distributed Object

Lecture 06: Distributed Object Lecture 06: Distributed Object Distributed Systems Behzad Bordbar School of Computer Science, University of Birmingham, UK Lecture 0? 1 Recap Interprocess communication Synchronous and Asynchronous communication

More information

Do! environment. DoT

Do! environment. DoT The Do! project: distributed programming using Java Pascale Launay and Jean-Louis Pazat IRISA, Campus de Beaulieu, F35042 RENNES cedex Pascale.Launay@irisa.fr, Jean-Louis.Pazat@irisa.fr http://www.irisa.fr/caps/projects/do/

More information

Java RMI Middleware Project

Java RMI Middleware Project Java RMI Middleware Project Nathan Balon CIS 578 Advanced Operating Systems December 7, 2004 Introduction The semester project was to implement a middleware similar to Java RMI or CORBA. The purpose of

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

Lecture 5: Object Interaction: RMI and RPC

Lecture 5: Object Interaction: RMI and RPC 06-06798 Distributed Systems Lecture 5: Object Interaction: RMI and RPC Distributed Systems 1 Recap Message passing: send, receive synchronous versus asynchronous No global Time types of failure socket

More information

A Fast Group Communication Mechanism for Large Scale Distributed Objects 1

A Fast Group Communication Mechanism for Large Scale Distributed Objects 1 A Fast Group Communication Mechanism for Large Scale Distributed Objects 1 Hojjat Jafarpour and Nasser Yazdani Department of Electrical and Computer Engineering University of Tehran Tehran, Iran hjafarpour@ece.ut.ac.ir,

More information

Monitoring System for Distributed Java Applications

Monitoring System for Distributed Java Applications Monitoring System for Distributed Java Applications W lodzimierz Funika 1, Marian Bubak 1,2, and Marcin Smȩtek 1 1 Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland 2 Academic

More information

Jarcler: Aspect-Oriented Middleware for Distributed Software in Java

Jarcler: Aspect-Oriented Middleware for Distributed Software in Java Jarcler: Aspect-Oriented Middleware for Distributed Software in Java Muga Nishizawa Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology Email: {muga,chiba@csg.is.titech.ac.jp

More information

ABSTRACT. Web Service Atomic Transaction (WS-AT) is a standard used to implement distributed

ABSTRACT. Web Service Atomic Transaction (WS-AT) is a standard used to implement distributed ABSTRACT Web Service Atomic Transaction (WS-AT) is a standard used to implement distributed processing over the internet. Trustworthy coordination of transactions is essential to ensure proper running

More information

A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING

A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING Güray YILMAZ 1 and Nadia ERDOĞAN 2 1 Dept. of Computer Engineering, Air Force Academy, 34807 Yeşilyurt, İstanbul, Turkey 2 Dept. of

More information

Middleware Reliability Implementations and Connector Wrappers

Middleware Reliability Implementations and Connector Wrappers Middleware Reliability Implementations and Connector Wrappers J.H. Sowell and R.E.K. Stirewalt Department of Computer Science and Engineering Michigan State University East Lansing, Michigan 48824 USA

More information

Reflective Design Patterns to Implement Fault Tolerance

Reflective Design Patterns to Implement Fault Tolerance Reflective Design Patterns to Implement Fault Tolerance Luciane Lamour Ferreira Cecília Mary Fischer Rubira Institute of Computing - IC State University of Campinas UNICAMP P.O. Box 676, Campinas, SP 3083-970

More information

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI 1 2 Overview Distributed OZ Java RMI CORBA IDL IDL VS C++ CORBA VS RMI 3 Distributed OZ Oz Language Multi paradigm language, strong support for compositionality and

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RPC & DISTRIBUTED OBJECTS] Shrideep Pallickara Computer Science Colorado State University Frequently asked questions from the previous class survey XDR Standard serialization

More information

UPnP Services and Jini Clients

UPnP Services and Jini Clients UPnP Services and Jini Clients Jan Newmarch School of Network Computing Monash University jan.newmarch@infotech.monash.edu.au Abstract UPnP is middleware designed for network plug and play. It is designed

More information

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2)

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2) Introduction Objective To support interoperability and portability of distributed OO applications by provision of enabling technology Object interaction vs RPC Java Remote Method Invocation (RMI) RMI Registry

More information

The Authenticator Pattern

The Authenticator Pattern The Authenticator Pattern F. Lee Brown, Jr. James DiVietri Graziella Diaz de Villegas CyberGuard Corp. Fort Lauderdale, FL 33309 Eduardo B. Fernandez Dept. of Computer Science and Eng. Florida Atlantic

More information

Component-Based Applications: A Dynamic Reconfiguration Approach with Fault Tolerance Support

Component-Based Applications: A Dynamic Reconfiguration Approach with Fault Tolerance Support Electronic Notes in Theoretical Computer Science 65 No. 4 (2002) URL: http://www.elsevier.nl/locate/entcs/volume65.html 9 pages Component-Based Applications: A Dynamic Reconfiguration Approach with Fault

More information

A Report on RMI and RPC Submitted by Sudharshan Reddy B

A Report on RMI and RPC Submitted by Sudharshan Reddy B A Report on RMI and RPC Submitted by Sudharshan Reddy B Abstract: This report mainly explains the RMI and RPC technologies. In the first part of the paper the RMI technology is briefly explained and in

More information

MODELS OF DISTRIBUTED SYSTEMS

MODELS OF DISTRIBUTED SYSTEMS Distributed Systems Fö 2/3-1 Distributed Systems Fö 2/3-2 MODELS OF DISTRIBUTED SYSTEMS Basic Elements 1. Architectural Models 2. Interaction Models Resources in a distributed system are shared between

More information

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Diego Sevilla 1, José M. García 1, Antonio Gómez 2 1 Department of Computer Engineering 2 Department of Information and

More information

Introduction & RMI Basics. CS3524 Distributed Systems Lecture 01

Introduction & RMI Basics. CS3524 Distributed Systems Lecture 01 Introduction & RMI Basics CS3524 Distributed Systems Lecture 01 Distributed Information Systems Distributed System: A collection of autonomous computers linked by a network, with software to produce an

More information

Today: Distributed Objects. Distributed Objects

Today: Distributed Objects. Distributed Objects Today: Distributed Objects Case study: EJBs (Enterprise Java Beans) Case study: CORBA Lecture 23, page 1 Distributed Objects Figure 10-1. Common organization of a remote object with client-side proxy.

More information

The implementation and analysis of OCI-based group communication support in CORBA

The implementation and analysis of OCI-based group communication support in CORBA Regular paper The implementation and analysis of OCI-based group communication support in CORBA Dukyun Nam, Dongman Lee, and Chansu Yu School of Engineering Information and Communications University Taejon,

More information

REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION

REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION Pascal Felber Xavier Défago Patrick Eugster André Schiper Swiss Federal Institute of Technology Operating Systems Lab. CH-1015

More information

Enhancing Java RMI with Asynchrony through Reflection

Enhancing Java RMI with Asynchrony through Reflection Enhancing Java RMI with Asynchrony through Reflection Orhan Akın, Nadia Erdoğan Istanbul Technical University, Computer Sciences, Informatics Institute, Maslak-34469, Istanbul, Turkey {orhan}@.engineer.com,

More information

Transparent Resource Management with Java RM API

Transparent Resource Management with Java RM API Transparent Resource Management with Java RM API Arkadiusz Janik and Krzysztof Zieliński Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland Abstract. The Multitasking Virtual

More information

DISTRIBUTED OBJECTS AND REMOTE INVOCATION

DISTRIBUTED OBJECTS AND REMOTE INVOCATION DISTRIBUTED OBJECTS AND REMOTE INVOCATION Introduction This chapter is concerned with programming models for distributed applications... Familiar programming models have been extended to apply to distributed

More information

metaxa and the Future of Reflection

metaxa and the Future of Reflection metaxa and the Future of Reflection Michael Golm, Jürgen Kleinöder University of Erlangen-Nürnberg Dept. of Computer Science 4 (Operating Systems) Martensstr. 1, D-91058 Erlangen, Germany {golm, kleinoeder}@informatik.uni-erlangen.de

More information

5 Distributed Objects: The Java Approach

5 Distributed Objects: The Java Approach 5 Distributed Objects: The Java Approach Main Points Why distributed objects Distributed Object design points Java RMI Dynamic Code Loading 5.1 What s an Object? An Object is an autonomous entity having

More information

Fault Tolerance for Highly Available Internet Services: Concept, Approaches, and Issues

Fault Tolerance for Highly Available Internet Services: Concept, Approaches, and Issues Fault Tolerance for Highly Available Internet Services: Concept, Approaches, and Issues By Narjess Ayari, Denis Barbaron, Laurent Lefevre and Pascale primet Presented by Mingyu Liu Outlines 1.Introduction

More information

Design and Implementation of a Persistence Service for Java

Design and Implementation of a Persistence Service for Java Poseidon House Castle Park Cambridge CB3 0RD United Kingdom TELEPHONE: Cambridge (01223) 515010 INTERNATIONAL: +44 1223 515010 FAX: +44 1223 359779 E-MAIL: apm@ansa.co.uk ANSA Phase III Design and Implementation

More information

Communication Paradigms

Communication Paradigms Communication Paradigms Nicola Dragoni Embedded Systems Engineering DTU Compute 1. Interprocess Communication Direct Communication: Sockets Indirect Communication: IP Multicast 2. High Level Communication

More information

Annotation Markers for Runtime Replication Protocol Selection

Annotation Markers for Runtime Replication Protocol Selection Annotation Markers for Runtime Replication Protocol Selection Hein Meling Department of Electrical Engineering and Computer Science, University of Stavanger, N-4036 Stavanger, Norway hein.meling@uis.no

More information

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture 1. Introduction Dynamic Adaptability of Services in Enterprise JavaBeans Architecture Zahi Jarir *, Pierre-Charles David **, Thomas Ledoux ** zahijarir@ucam.ac.ma, {pcdavid, ledoux}@emn.fr (*) Faculté

More information

A Metaobject Protocol for Fault-Tolerant CORBA Applications *

A Metaobject Protocol for Fault-Tolerant CORBA Applications * A Metaobject Protocol for Fault-Tolerant CORBA Applications * Marc-Olivier Killijian 1, Jean-Charles Fabre, Juan-Carlos Ruiz-Garcia LAAS-CNRS, 7 Avenue du Colonel Roche 31077 Toulouse cedex, France Shigeru

More information

Distributed Systems. 5. Remote Method Invocation

Distributed Systems. 5. Remote Method Invocation Distributed Systems 5. Remote Method Invocation Werner Nutt 1 Remote Method Invocation 5.1 Communication between Distributed Objects 1. Communication between Distributed Objects 2. RMI 2 Middleware Middleware

More information

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4 EEC-681/781 Distributed Computing Systems Lecture 4 Department of Electrical and Computer Engineering Cleveland State University wenbing@ieee.org Outline Inter-process communications Computer networks

More information

Lecture VI: Distributed Objects. Remote Method Invocation

Lecture VI: Distributed Objects. Remote Method Invocation Lecture VI: Distributed Objects. Remote Method Invocation CMPT 401 Summer 2007 Dr. Alexandra Fedorova Remote Method Invocation In an object-oriented language (usually Java) A way to call a method on an

More information

MODELS OF DISTRIBUTED SYSTEMS

MODELS OF DISTRIBUTED SYSTEMS Distributed Systems Fö 2/3-1 Distributed Systems Fö 2/3-2 MODELS OF DISTRIBUTED SYSTEMS Basic Elements 1. Architectural Models 2. Interaction Models Resources in a distributed system are shared between

More information

CAS 703 Software Design

CAS 703 Software Design Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on Software by Tao et al. (Chapters 9 and 10) (SOA) 1 Interaction

More information

5.4. Events and notifications

5.4. Events and notifications 5.4. Events and notifications Distributed event-based systems extend local event model Allowing multiple objects at diff. locations to be notified of events taking place at an object Two characteristics:

More information

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1 Message Passing vs. Distributed Objects 5/15/2009 Distributed Computing, M. L. Liu 1 Distributed Objects M. L. Liu 5/15/2009 Distributed Computing, M. L. Liu 2 Message Passing versus Distributed Objects

More information

Kevin Skadron. 18 April Abstract. higher rate of failure requires eective fault-tolerance. Asynchronous consistent checkpointing oers a

Kevin Skadron. 18 April Abstract. higher rate of failure requires eective fault-tolerance. Asynchronous consistent checkpointing oers a Asynchronous Checkpointing for PVM Requires Message-Logging Kevin Skadron 18 April 1994 Abstract Distributed computing using networked workstations oers cost-ecient parallel computing, but the higher rate

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RMI] Frequently asked questions from the previous class survey Shrideep Pallickara Computer Science Colorado State University L21.1 L21.2 Topics covered in this lecture RMI

More information

Using the Bridge Design Pattern for OSGi Service Update

Using the Bridge Design Pattern for OSGi Service Update Using the Bridge Design Pattern for OSGi Service Update Hans Werner Pohl Jens Gerlach {hans,jens@first.fraunhofer.de Fraunhofer Institute for Computer Architecture and Software Technology (FIRST) Berlin

More information

Mission Modes for Safety Critical Java

Mission Modes for Safety Critical Java Mission Modes for Safety Critical Java Martin Schoeberl Institute of Computer Engineering Vienna University of Technology, Austria mschoebe@mail.tuwien.ac.at Abstract. Java is now considered as a language

More information

DS 2009: middleware. David Evans

DS 2009: middleware. David Evans DS 2009: middleware David Evans de239@cl.cam.ac.uk What is middleware? distributed applications middleware remote calls, method invocations, messages,... OS comms. interface sockets, IP,... layer between

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Chapter 5 Distributed Objects and Remote Invocation

Chapter 5 Distributed Objects and Remote Invocation CSD511 Distributed Systems 分散式系統 Chapter 5 Distributed Objects and Remote Invocation 吳俊興 國立高雄大學資訊工程學系 Chapter 5 Distributed Objects and Remote Invocation 5.1 Introduction 5.2 Communication between distributed

More information

Lazy Agent Replication and Asynchronous Consensus for the Fault-Tolerant Mobile Agent System

Lazy Agent Replication and Asynchronous Consensus for the Fault-Tolerant Mobile Agent System Lazy Agent Replication and Asynchronous Consensus for the Fault-Tolerant Mobile Agent System Taesoon Park 1,IlsooByun 1, and Heon Y. Yeom 2 1 Department of Computer Engineering, Sejong University, Seoul

More information

Java-MOP: A Monitoring Oriented Programming Environment for Java

Java-MOP: A Monitoring Oriented Programming Environment for Java Java-MOP: A Monitoring Oriented Programming Environment for Java Feng Chen and Grigore Roşu Department of Computer Science, University of Illinois at Urbana - Champaign, USA {fengchen, grosu}@uiuc.edu

More information

Hunting for Bindings in Distributed Object-Oriented Systems

Hunting for Bindings in Distributed Object-Oriented Systems Hunting for Bindings in Distributed Object-Oriented Systems Magdalena S lawiñska Faculty of Electronics, Telecommunications and Informatics Gdańsk University of Technology Narutowicza 11/12, 80-952 Gdańsk,

More information

JavaStat: A Distributed Statistical Computing Environment

JavaStat: A Distributed Statistical Computing Environment New URL: http://www.r-project.org/conferences/dsc-2001/ DSC 2001 Proceedings of the 2nd International Workshop on Distributed Statistical Computing March 15-17, Vienna, Austria http://www.ci.tuwien.ac.at/conferences/dsc-2001

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Suited for Client-Server structure. Combines aspects of monitors and synchronous message passing: Module (remote object) exports operations, invoked with call. call blocks (delays

More information

Adaptive Fault Tolerant Systems: Reflective Design and Validation

Adaptive Fault Tolerant Systems: Reflective Design and Validation 1 Adaptive Fault Tolerant Systems: Reflective Design and Validation Marc-Olivier Killijian Dependable Computing and Fault Tolerance Research Group Toulouse - France 2 Motivations Provide a framework for

More information

GUI framework communication via the WWW

GUI framework communication via the WWW GUI framework communication via the WWW Thomas Tilley, School of Information Technology, Griffith University, Australia 4215, T.Tilley@gu.edu.au Peter Eklund, School of Information Technology, Griffith

More information

Basic vs. Reliable Multicast

Basic vs. Reliable Multicast Basic vs. Reliable Multicast Basic multicast does not consider process crashes. Reliable multicast does. So far, we considered the basic versions of ordered multicasts. What about the reliable versions?

More information

Distributed Computing

Distributed Computing Distributed Computing 1 Why distributed systems: Benefits & Challenges The Sydney Olympic game system: see text page 29-30 Divide-and-conquer Interacting autonomous systems Concurrencies Transactions 2

More information

Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects

Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects Laurent Berger I3S - CNRS UPRESA 6070 - Bât ESSI 930 Rte des Colles - BP 145

More information

COMMUNICATION IN DISTRIBUTED SYSTEMS

COMMUNICATION IN DISTRIBUTED SYSTEMS Distributed Systems Fö 3-1 Distributed Systems Fö 3-2 COMMUNICATION IN DISTRIBUTED SYSTEMS Communication Models and their Layered Implementation 1. Communication System: Layered Implementation 2. Network

More information

CMSC 202. Exceptions

CMSC 202. Exceptions CMSC 202 Exceptions Error Handling In the ideal world, all errors would occur when your code is compiled. That won t happen. Errors which occur when your code is running must be handled by some mechanism

More information

Distributed Systems. The main method of distributed object communication is with remote method invocation

Distributed Systems. The main method of distributed object communication is with remote method invocation Distributed Systems Unit III Syllabus:Distributed Objects and Remote Invocation: Introduction, Communication between Distributed Objects- Object Model, Distributed Object Modal, Design Issues for RMI,

More information

Composition and Separation of Concerns in the Object-Oriented Model

Composition and Separation of Concerns in the Object-Oriented Model ACM Computing Surveys 28A(4), December 1996, http://www.acm.org/surveys/1996/. Copyright 1996 by the Association for Computing Machinery, Inc. See the permissions statement below. Composition and Separation

More information

RPC and RMI. 2501ICT Nathan

RPC and RMI. 2501ICT Nathan RPC and RMI 2501ICT Nathan Contents Client/Server revisited RPC Architecture XDR RMI Principles and Operation Case Studies Copyright 2002- René Hexel. 2 Client/Server Revisited Server Accepts commands

More information

Verteilte Systeme (Distributed Systems)

Verteilte Systeme (Distributed Systems) Verteilte Systeme (Distributed Systems) Karl M. Göschka Karl.Goeschka@tuwien.ac.at http://www.infosys.tuwien.ac.at/teaching/courses/ VerteilteSysteme/ Lecture 3: Communication (Part 2) Remote Procedure

More information

REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION*

REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION* REPLICATING CORBA OBJECTS: A MARRIAGE BETWEEN ACTIVE AND PASSIVE REPLICATION* Pascal Felber, Xavier Defago, Patrick Eugster and Andre Schiper Swiss Federal Institute of Technology Operating Systems Lab.

More information

The UNIVERSITY of EDINBURGH. SCHOOL of INFORMATICS. CS4/MSc. Distributed Systems. Björn Franke. Room 2414

The UNIVERSITY of EDINBURGH. SCHOOL of INFORMATICS. CS4/MSc. Distributed Systems. Björn Franke. Room 2414 The UNIVERSITY of EDINBURGH SCHOOL of INFORMATICS CS4/MSc Distributed Systems Björn Franke bfranke@inf.ed.ac.uk Room 2414 (Lecture 3: Remote Invocation and Distributed Objects, 28th September 2006) 1 Programming

More information

Design and Implementation of High Performance and Availability Java RMI Server Group

Design and Implementation of High Performance and Availability Java RMI Server Group Design and Implementation of High Performance and Availability Java RMI Group 1. Introduction Tianjing Xu University of Auckland, Auckland, New Zealand txu012@ec.auckland.ac.nz Nowadays, providing high

More information

JavaSpaces technology for distributed communication and collaboration. Chih-Yao Hsieh

JavaSpaces technology for distributed communication and collaboration. Chih-Yao Hsieh JavaSpaces technology for distributed communication and collaboration Chih-Yao Hsieh Computer Science and Engineering University of Texas at Arlington chsieh@cse.uta.edu Abstract This paper will give an

More information

A Concept of Replicated Remote Method Invocation

A Concept of Replicated Remote Method Invocation A Concept of Replicated Remote Method Invocation Jerzy Brzezinski and Cezary Sobaniec Institute of Computing Science Poznan University of Technology, Poland {Jerzy.Brzezinski,Cezary.Sobaniec}@cs.put.poznan.pl

More information

Lecture 5: RMI etc. Servant. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3

Lecture 5: RMI etc. Servant. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3 Lecture 5: RMI etc. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3 CDK Figure 5.7 The role of proxy and skeleton in remote method invocation client

More information

A Grid-Enabled Component Container for CORBA Lightweight Components

A Grid-Enabled Component Container for CORBA Lightweight Components A Grid-Enabled Component Container for CORBA Lightweight Components Diego Sevilla 1, José M. García 1, Antonio F. Gómez 2 1 Department of Computer Engineering 2 Department of Information and Communications

More information

Overview. Distributed Systems. Distributed Software Architecture Using Middleware. Components of a system are not always held on the same host

Overview. Distributed Systems. Distributed Software Architecture Using Middleware. Components of a system are not always held on the same host Distributed Software Architecture Using Middleware Mitul Patel 1 Overview Distributed Systems Middleware What is it? Why do we need it? Types of Middleware Example Summary 2 Distributed Systems Components

More information

Towards Introducing Code Mobility on J2ME. Laurentiu Lucian Petrea and Dan Grigoras Computer Science Department UCC Cork, Ireland

Towards Introducing Code Mobility on J2ME. Laurentiu Lucian Petrea and Dan Grigoras Computer Science Department UCC Cork, Ireland Towards Introducing Code Mobility on J2ME Laurentiu Lucian Petrea and Dan Grigoras Computer Science Department UCC Cork, Ireland www.mccg.ucc.ie Mobile Ad Hoc Networks Heterogeneous mobile devices No fixed

More information

Byzantine Fault Tolerant Coordination for Web Services Atomic Transactions

Byzantine Fault Tolerant Coordination for Web Services Atomic Transactions Byzantine Fault Tolerant Coordination for Web s Atomic Transactions Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University, Cleveland, OH 44115 wenbing@ieee.org Abstract.

More information

Concurrency Control with Java and Relational Databases

Concurrency Control with Java and Relational Databases Concurrency Control with Java and Relational Databases Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Recife, PE, Brazil scbs,phmb @cin.ufpe.br Abstract As web based

More information

Chapter 4 Remote Procedure Calls and Distributed Transactions

Chapter 4 Remote Procedure Calls and Distributed Transactions Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

Implementing Software-Fault Tolerance in C++ and Open C++: An Object-Oriented and Reflective Approach

Implementing Software-Fault Tolerance in C++ and Open C++: An Object-Oriented and Reflective Approach Implementing Software-Fault Tolerance in C++ and Open C++: An Object-Oriented and Reflective Approach Jie Xu, Brian Randell and Avelino F. Zorzo Department of Computing Science University of Newcastle

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/58 Definition Distributed Systems Distributed System is

More information

Communication and Distributed Processing

Communication and Distributed Processing Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

Young-Woo Kwon 1, Eli Tilevich 1, and Taweesup Apiwattanapong 2

Young-Woo Kwon 1, Eli Tilevich 1, and Taweesup Apiwattanapong 2 DECEMBER 3 rd, 2009 URBANA, ILLINOIS Young-Woo Kwon 1, Eli Tilevich 1, and Taweesup Apiwattanapong 2 1 Software Innovations Lab 2 NECTEC Dept. of Computer Science Virginia Tech Criminal try evidence {

More information

Remote Invocation. 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics

Remote Invocation. 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics Remote Invocation Nicola Dragoni Embedded Systems Engineering DTU Informatics 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics From the First Lecture (Architectural Models)...

More information

Chapter 10 DISTRIBUTED OBJECT-BASED SYSTEMS

Chapter 10 DISTRIBUTED OBJECT-BASED SYSTEMS DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN Chapter 10 DISTRIBUTED OBJECT-BASED SYSTEMS Distributed Objects Figure 10-1. Common organization of a remote

More information

Chapter 8 Fault Tolerance

Chapter 8 Fault Tolerance DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN Chapter 8 Fault Tolerance 1 Fault Tolerance Basic Concepts Being fault tolerant is strongly related to

More information

Today: Distributed Middleware. Middleware

Today: Distributed Middleware. Middleware Today: Distributed Middleware Middleware concepts Case study: CORBA Lecture 24, page 1 Middleware Software layer between application and the OS Provides useful services to the application Abstracts out

More information

Object-Oriented Systems Design RMI

Object-Oriented Systems Design RMI Object-Oriented Systems Design RMI Michael Hauser November 2001 Workshop: AW3 Module: EE5029A Tutor: Mr. Müller Course: M.Sc Distributes Systems Engineering Lecturer: Mr. Prowse CONTENTS Contents 1 Aims

More information

Middleware for Dependable Network Services in Partitionable Distributed Systems

Middleware for Dependable Network Services in Partitionable Distributed Systems Middleware for Dependable Network Services in Partitionable Distributed Systems Alberto Montresor Renzo Davoli Özalp Babaoğlu Abstract We describe the design and implementation of Jgroup: a middleware

More information

Implementing Software Connectors through First-Class Methods

Implementing Software Connectors through First-Class Methods Implementing Software Connectors through First-Class Methods Cheoljoo Jeong and Sangduck Lee Computer & Software Technology Laboratory Electronics and Telecommunications Research Institute Taejon, 305-350,

More information

Communication. Distributed Systems Santa Clara University 2016

Communication. Distributed Systems Santa Clara University 2016 Communication Distributed Systems Santa Clara University 2016 Protocol Stack Each layer has its own protocol Can make changes at one layer without changing layers above or below Use well defined interfaces

More information

Reflection (in Java)

Reflection (in Java) CSC7336 : Advanced Software Engineering... J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.telecom-sudparis.eu/~gibson/teaching/csc7336/ Reflection (in Java).../~gibson/Teaching/CSC7336/L4-Reflection.pdf

More information

Engineering CORBA-based Distributed Systems

Engineering CORBA-based Distributed Systems Engineering CORBA-based Distributed Systems Ramón Juanes +, Fernando Bellas *, Nieves Rodríguez * and Ángel Viña * + Departamento de Electrónica y Sistemas, Universidad Alfonso X El Sabio, Madrid, CP/

More information

Interprocess Communication

Interprocess Communication Interprocess Communication Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved. 0-13-239227-5 Introduction Applications, services

More information

03 Remote invoaction. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI

03 Remote invoaction. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI 03 Remote invoaction Request-reply RPC Coulouris 5 Birrel_Nelson_84.pdf RMI 2/23 Remote invocation Mechanisms for process communication on a Built on top of interprocess communication primitives Lower

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software

Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software Avelino Zorzo, Jie Xu, and Brian Randell * Department of Computing Science, University of Newcastle upon Tyne, NE1 7RU,UK

More information

Aspect-Based Workflow Evolution

Aspect-Based Workflow Evolution Aspect-Based Workflow Evolution Boris Bachmendo and Rainer Unland Department of Mathematics and Computer Science University of Essen, D - 45117 Essen {bachmendo, unlandr}@cs.uni-essen.de Abstract. In this

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/60 Definition Distributed Systems Distributed System is

More information