Computer Science 441

Principles of Distributed Systems

Gregory M. Kapfhammer

flickr photo shared by Patrick Brosset under a Creative Commons ( BY-NC ) license

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in the Textbook

Application Areas in Distributed Systems

Object Orientation

Distributed Objects

Object = state + behavior

An object encapsulates state

Methods manipulate and access the state

Methods are made available by an interface

Distributed versus local objects?

flickr photo shared by Kartcee under a Creative Commons ( BY-NC-ND ) license

Refer to Figure 10-1 for additional details!

Where is the state of a "remote" object?

Where is the state of a "distributed" object?

Distributed Objects

Compile-time versus run-time

Persistent versus transient

Enterprise Java Beans (EJBs)

Host objects in an EJB server

Globe distributed shared objects

flickr photo shared by Kartcee under a Creative Commons ( BY-NC-ND ) license

Refer to Figure 10-5 for an object server

Purpose of the demultiplexer?

Before an RPC, there must be locating

Before an RPC, there must be a binding

Implicit versus explicit binding

Differences between approaches in Figure 10-7?

Static versus dynamic invocation


invoke(fobject, id(append), int)

Have we seen one of these before?

Java RMI

Remote classes

Remote methods

Remote exceptions



Generated at compile-time

Support from the JVM

RMI Registry

Registration and lookup

Synchronize to support concurrency

Lock on the side of the client or the server?

What are the trade-offs of the two approaches?

What method is adopted by Java RMI?

Replicated method invocations

Fault tolerance in Java

See Figures 10-17 and 10-18 for more details!

Distributed security

Security challenges?

Hijacking the lookup service!

Principle: separate policy from mechanism

Security policy in Java RMI

Security Policy

          grant codeBase "file:simple-client.jar" {
          grant codeBase "file:simple-server.jar" {

Security Policy

          grant {
               "*:80", "connect";
               permission java.awt.AWTPermission
               permission java.awt.AWTPermission



Digital signatures

Trusted third-party servers

Questions on distributed object-based systems?