ADAPT IST-2001-37126
Replication Framework:Progress Report
Vance Maverick
University of Bologna
Dec. 11, 2003
ADAPT Bologna meeting, Dec. 20032 ADAPT
Outline
• Framework recap• EJB implementation• Web-service implementation• Transaction interception• Deployment support• Some open issues• Summary
ADAPT Bologna meeting, Dec. 20033 ADAPT
Framework recap
• Generic API for interface between standard J2EE server and replication algorithm– Allow different replication algorithms to be plugged in
– Protect replication development from upgrades in the server
• Circulated paper designs from May onwards• Presented at Brussels meeting
ADAPT Bologna meeting, Dec. 20034 ADAPT
ComponentMonitor API
• Approach: module barriers between J2EE container and replication algorithm
• Replication code implements interface ComponentMonitor
• Container provides services to replication code through interfaces– ContainerSupport provides top-level container services
– ComponentHandle stands for component
ADAPT Bologna meeting, Dec. 20035 ADAPT
Intercepting invocations
ComponentMonitor
Handle
?
call()
call()
• Container diverts invocation to ComponentMonitor• Response call(ComponentHandle, Request)
• CM may perform arbitrary computation + communication
• To continue execution, it forwards call to ComponentHandle
InterceptedNormal
ADAPT Bologna meeting, Dec. 20036 ADAPT
Communicating component state
ComponentMonitor
Handle
ComponentMonitor
Handle
Handle
State
StateState
• ComponentMonitor does not reference component directly
• Instead, uses serializable ComponentHandle
• Gets and sets state as opaque serializable “blob” (bytes)
ADAPT Bologna meeting, Dec. 20037 ADAPT
EJB implementation of API
• Types of EJBs– Entity bean
– Stateless session bean
– Stateful session bean
• ComponentHandle contains– JNDI name of bean
– Session ID (for SFSB)
– Primary key object (for entity bean)
• Intercept persistence methods for entity bean
ADAPT Bologna meeting, Dec. 20038 ADAPT
EJB Invocation Interception
Persistence Manager
EJB Container
Interceptors
EJBEJB
EJB
ADAPT Bologna meeting, Dec. 20039 ADAPT
EJB Invocation Interception
Persistence Manager
EJB Container
Interceptors
EJBEJB
EJB
Component Monitor
Call Management
Persistence Management
ADAPT Bologna meeting, Dec. 200310 ADAPT
EJB Persistence Invocation Interception
Persistence Manager
EJB Container
Interceptors
EJBEJB
EJB
ADAPT Bologna meeting, Dec. 200311 ADAPT
EJB Persistence Invocation Interception
Persistence Manager
EJB Container
Interceptors
EJBEJB
EJB
Component Monitor
Call Management
Persistence Management
Wrapper
ADAPT Bologna meeting, Dec. 200312 ADAPT
Axis web service objects
• Implement a web service (port type)• WSDL2Java tool
– Generates Java interface from WSDL definition
– Developer creates object as implementation of interface
• Deployed in Axis configuration file– “Scope”: instance per request, per client session, or per
server
– Request scope is stateless, others stateful
ADAPT Bologna meeting, Dec. 200313 ADAPT
Web service implementation of API
• ComponentHandle– Service name
– Session ID (when session scope)• We generate this
• State transmission– Serialized form of web service object
• Automatic translation of EJB references
– When deserialized, new object replaces old
ADAPT Bologna meeting, Dec. 200314 ADAPT
Handlers in Axis
• Handler model defined by Sun (JAX-RPC)
handleRequest()
handleResponse()
handleRequest()
handleResponse()
ServiceObject
HTTP
ADAPT Bologna meeting, Dec. 200315 ADAPT
handleRequest()
handleResponse()
handleRequest()
handleResponse()
ServiceObject
static call()
call() call()
ComponentMonitor ComponentHandle
Proxy
AXIS
TxHandler WSMon Handler
“Normal”Axis chainHandlersdisabled
ComponentInterception
ADAPT Bologna meeting, Dec. 200316 ADAPT
Container
Transactions
EJB
TransactionManager
PersistenceManager
DataSource(XAResource)
Read,Write
begin,commit
prepare, commit, rollback
ADAPT Bologna meeting, Dec. 200317 ADAPT
Container
Transactions
TransactionManager
PersistenceManager
DataSource(XAResource)
Read,Write
begin,commit
prepare, commit, rollback
TransactionInterceptor
begin,commit
EJB
ADAPT Bologna meeting, Dec. 200318 ADAPT
Container
Transactions
PersistenceManager
DataSource(XAResource)
Read,Write
begin,commit
prepare, commit, rollback
TransactionInterceptor
EJB
ADAPT Bologna meeting, Dec. 200319 ADAPT
Remote Deployment (Farming)
Component Monitor
Container Support
Component Monitor
Container Support
ADAPT Bologna meeting, Dec. 200320 ADAPT
Remote Deployment (Farming)
Component Monitor
Container Support
Component Monitor
Container Support
Notification
ADAPT Bologna meeting, Dec. 200321 ADAPT
Remote Deployment (Farming)
Component Monitor
Container Support
Component Monitor
Container Support
Transmission
ADAPT Bologna meeting, Dec. 200322 ADAPT
Remote Deployment (Farming)
Component Monitor
Container Support
Component Monitor
Container Support
Deployment
ADAPT Bologna meeting, Dec. 200323 ADAPT
Open issues I: Persistence
• Persistent creation vs. instantiation of existing object– Requires clarification in API
• So far, test applications based on entity beans, CMP• BMP should be equivalent
– ejbStore() and ejbLoad() have same timing, semantics
• In practice, developers don’t rely entirely on entity beans– Considered inefficient
ADAPT Bologna meeting, Dec. 200324 ADAPT
Persistence through SFSBs
• Consider stateful session bean that accesses DB– Each method invocation may read and modify DB as well as
bean state
• Replication algorithm should wait till commit before synchronizing state on other replicas
• Bean should not access other state outside beans, DB– Standard development guideline
• With these cautions, we believe mechanism is adequate
ADAPT Bologna meeting, Dec. 200325 ADAPT
Open issues II: Client-side invocation
ComponentMonitor
Stub
ComponentMonitor
Stub
ComponentMonitorComponentMonitor
Cluster 1
Cluster 2
ADAPT Bologna meeting, Dec. 200326 ADAPT
What stub could do
• Select target host for invocation• Select means of communication
– Group communication instead of RMI
• Add information to request and response– Session ID
– List of alternate hosts
• Applies to J2EE invocation more than web services– Stub code is downloaded from server
ADAPT Bologna meeting, Dec. 200327 ADAPT
Open Issues III: Message-Driven Beans
• Natural base for asynchronous service implementation • Stateless component with one method
– void onMessage(javax.jms.Message)
• Variant of existing invocation model– Response is posted to a JMS Session (not return value from
invocation)
ADAPT Bologna meeting, Dec. 200328 ADAPT
Summary
• API has stabilized– Some loose ends to be tied up
– Core methods work correctly
• Demonstrated in “toy” replication algorithms• Replication algorithm development can begin