What are the major types of Application Server Middleware?
RPC/RMI: basic approach for development and execution (location transparency)
TP Monitor: focuses on transaction processing (TRPC) and process management (single tier: mainframe). Key principle is large scale TP: robustness + scalability
Object Broker (CORBA): distributed object computing: some additions to RMI model.
Object Transaction Monitor: simple combination of TP monitor with object broker capabilities
Component transaction monitor: combines TP mon., object broker with server-side components. Further separation of application logic form infrastructure, automating many server-side tasks.
What are the main tasks of an Application Server?
What are the major deficiencies of RMI as an application server middleware?
What are the main capabilities provided by TP monitors in addition to RMI?
Main goal: support transactional distributed IS (transaction, process, application) management beyonde X/OPEN DTP
What are the key ingredients in TPMs to achieve Scalability and Performance?
Schedule clients to available server objects: pooling!
Load-balancing: dynamic management of server pools, priorities
Give an overview of the TP monitor architecture
What are the goals and general architecture of CORBA?
CORBA: Platform independent RPC + Services
What is the functionality of CORBA IOL and how is it used in the programming environment?
Defines interfaces of objects in a standard way. Language-specific binding and compilers are used to implement (Skeletons and stubs)
IDL features may be easier or hard to implement in some languages
Give an overview of the ORB and object adapter components of CORBA
ORB: ~RMI functionality: manages stubs on the client side and mappings to object adapters on the server side, as well as providing helper functions (conversion, cast, …)
Portable Object Adapter: (TP Monitor) generates objects references. Handles mapping of RMI to server objects + activate/register/deactivate server objects
What are the invocation approaches of CORBA?
Static invocation: traditional stub + skeleton approach (map IDL: prog. language)
Dynamic invocation: discoverability, selection of objects interfaces through repository (~ DB catalog)
Give an overview of the communication aspects in CORBA
Standardized data formats (encoding of data types) and responsabilities for conversion: common data representation (CDR)
Standardized communication protocol: between different ORBs. General inter-ORB protocol (GIOP). Implemented by, eg, TCP/IP in Internet IOP.
Give an overview of CORBA Object services, specifically the transaction Service
Goal: extend ORB with additional services, defined with IDL. Naming, transaction,uery, persistence…
Provides service objects with standard interface (eg. name service), implemented by CORBA system or by components/application (eg. transaction)
Transaction service: based on X/OPEN DTP
Explain the roles involved in CORBA transactions and relate them to X/OPEN DTP.
Transactional Client = X/OPEN application
Transactional Server = X/OPEN Server
Recoverable Server = X/OPEN Resource Manager
Transaction Service (OTS) itself is the TA-Manager of X/OPEN.
What are the drawbacks of CORBA and how does a Server-side component model solve the problem in this approach?
Programming model is too complex (a lot of infrastructure code must be implemented)
No standard for programming server-side objects (proprietary infrastructure: loading/lifecycle, etc, pooling…). Object Adapter
Server side component model:
What are the main goals and concepts of EJB?
EJB as server-side component encapsulating business logic: separated from infrastructure code
EJB container as runtime environment providing services and execution context. Bean-container contract: callback methods optionally implemented by developer of bean (lifecycle)
EJB consists of class implementing business logic, remote interface (accessed by clients), home interface (additional life-cycle logic), primary key class (for persistence), and deployment descriptor: includes desired properties (persistence, transaction behavior) of beans, which can be implemented by deployer
Client interacts with home interface and EJB object (automatically generated at deployment): remote interface + business logic of bean + infrastrucuture code
What are the different types of beans and their semantics?
Entity beans: PERSISTED business objects (state managed by DB/RM -> primary key)
Session beans: TRANSIENT objects for session-oriented activities (like in web concept)
Give an overview of the deployment process in EJB
EJB objects are server independent: server-related/infrastructure aspects are defined on deployment.
Make classes and interface known, specify mapping to DB, configure transactional behavior, security, set environment/context variable: generates glue-code
All specified in descriptor
How does the demarcation of transactions work in EJB and what are the different approaches?
Transactional behavior of method of method can be:
Explicit/Programmatic TA Management
Implicity/Declarative TA Management
Give an overview of transaction support in JDBC (distributed)
Interaction with transaction manager: X/OPEN DTP, Java transaction service (JTS)
Demarcation must be done through JTA (user transaction object) and not with connection interface
Datasource interface provides transparency if distributed transactions
Implementing drivers must be implemented additional methods (XA*)
Similar to X/OPEN DTP capabilities
Give an overview of the connection pooling mechanism of JDBC
Connections to DB are expensive: pooling can improve performance and scalability
Transparent to application with DataSource interface, gives logical Connection to JDBC app.
Security aspect: give connections based on authentication.
Give an overview of large-scale resource management in EJB
TP monitor capabilities added to components (load balancing, pooling)
Instance pooling/swapping: bean objects can be reused across transaction boundaries (stateless session + entity)
Passivation / Activation: bean state stored separately from bean (passivation)