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
Peer-to-peer computing
Concepts
JXTA
Intrusion Detection
Promises
Soemthing 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)