Distributed Applications
in the Enterprise Final Exam Topics and Promises Fall 2002
Midterm Topics (that will reappear)
Distributed Applications
Channels (send/receive)
Distributed objects (RPC/RMI)
Middleware agent (space/message queue)
Bean Pattern
Java Event Model
Listeners
Single event thread in Java and implications
Synchronization by adding task to event queue
Component Assembly
Java Beans
Serialization
Introspection
Security
Fundamental properties
privacy
integrity
authentication
non-repudiation
Symmetric/secret key
Asymmetric/public key
Key agreement protocols
Key management
Hash functions to create digest
Digital Signatures
Timestamping to limit repudiation
Databases
JDBC:
The process
PreparedStatement
CallableStatement
Transactions
transaction makes a series of SQL statements appear to be atomic
ACID
Atomicity - The entire sequence of actions must be either completed or
aborted. The transaction cannot be partially successful.
Consistency - The transaction takes the resources from one consistent state
to another.
Isolation - A transaction's effect is not visible to other transactions
until the transaction is committed.
Durability - Changes made by the committed transaction are permanent and
must survive system failure
commit or rollback before close
New Topics
Remote Method Invocation
Serializing (marshaling) objects / persistency
Distributed Objects:
Creating a service (IDL, skeleton, stub)
Server action:
Register service with Object Manager
Client action:
Request service from Object Manager
Object manager action:
Negotiate with service providers for an object
Note: This sometimes involves Reflection
Deliver remote object to client
Client/Server Interaction:
Client uses remote object to get services
Server receives remote messages, provides results
Arguments and results can be
by-value (local copy) or
by reference (remote handle)
This exchange involves serializing/unserializing objects
Roles are reversed when server sends messages to remote objects from client
The above is standard whether Java RMI or CORBA or whatever
Web Applications: Servlets
Container
load balancing
serializing unused beans
LRU strategy
Access is through container (no retention or passing of handle to object)
Conatiner managed area for servlets
Servlets versus CGI
JSP: When JSP; when servlet?
Enterprise Java Beans (EJBs)
Naming service to register and find bean by name
Session Beans
Stateful vs stateless
Entity Beans
Relation to database row
Bean managed versus container managed persistence
Home interface must include a findByPrimaryKey, as well as create
Work is offloaded from software development to bean and servlet deployment
Message Queues
Point-to-point
Publish/subscrbe
topic
Messages can have properties set by sender and used by receiver to filter
Tuple Spaces
Transient vs persistent space
Operations
notify
read, readIfExists
take, takeIfExists
write
Pure space has eval and no predicate operations
Examples
Provides communication and coordination
Semaphores
Arrays
Embarrassingly parallel problems
image manipulation
LOD computation
Lightweight communicating agents
Efficient management of space
Leases
Used extensively in Javaspaces, Jini, distributed garbage collection
Prevents deserted tuples from cluttering space
Can renew
Jini
Discovery
Multi- vs Unicast
Join
Avoiding a packet storm
Lookup
Group and/or attributes
Remote or local proxy
Distributed garbage collection (also issue in RMI)
CORBA
IDL (agreements on types and services)
Peer-to-peer computing
General Concepts
Distributed search
Pure versus hybrid P2P systems
JXTA
Peer groups
Advertisements (XML right now)
Peer discovery (peer is subject, not object)
LAN-based (limited horizon)
Cascaded (peers in my horizon use peers in theirs)
Rendezvous (pseudo server for peers)
SOAP
Intrusion Detection
Promises
Something on Java's event handling model
Something on serialization (maybe even depth-first search)
A question on introspection
A question related to encryption/decryption
Remember ACID as regards transactions
One or more RMI questions
One or more Web App questions (servlets/JSP/EJB)
A tuple space question (e.g., analyzing an example usage)