* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Microsoft PPT 97
Survey
Document related concepts
Transcript
CSE298
CSE300
Java Beans and
Enterprise Java Beans
Paul C. Barr
The Mitre Corporation
Eatontown NJ
Kimble Cheron,
Prof. Steven A. Demurjian,
and Mitch Saba
Computer Science & Engr. Dept.
poobarr@mitre.org
steve@engr.uconn.edu
http://www.engr.uconn.edu/~steve
(860) 486 - 4818
JR&B-1.1
CSE298
CSE300
Changing Perspectives
Computers are Guilty of Creating More Disorder
then Simplicity
Current Software Systems are Relics
Built Largely By and For Technical Computer
Users
Never Intended to Operate in Today’s
Environment
Designer’s Need to Break Out of Old Mold
Consider Total Design Space
Design Should Help Manage Complexity, Not
Add to It
What is Available to Assist in Changing Times?
JR&B-1.2
CSE298
CSE300
Components
Reusable Software Building Blocks
Pre-Constructed from Encapsulated Application
Code
Easily Combined with Other Components
Seamlessly Merged with Custom Code
Rapid Prototyping of Complete Applicaiton
What is a Component?
GUI Widget (Button, Window, etc.)
Combination of Components (Window with
Elevator Bars and Pull-Down Menus)
Application Service (Account Management
Function)
JR&B-1.3
CSE298
CSE300
Overview
A First Look at Java Beans
What are They?
How are They Utilized?
Enterprise Java Beans
Not Just for Clients Anymore!
Capabilities and Usage
Relationship to “New” and “Old” Technologies
Component-Based Client/Server Model
Multi-Tiered Architecture and EJB
Tiered Development for Extensibility
Comparisons of Approaches
Java Blend for Database Interoperability
JR&B-1.4
CSE298
CSE300
Java Beans
Extends "Write Once, Run Anywhere (WORA)TM"
to Include "Reuse Everywhere”
What is a Bean?
Independent Reusable Software Component
Visually Manipulated in Builder Tools
Can Be Visible Object:
AWT Components
or Invisible Objects:
Queues and Stacks
or Composed Objects:
Calculator Ops + Keys + Display
JR&B-1.5
CSE298
CSE300
Java Beans
Bean vs. Component
Source Code Inaccessible
Customizable to Suit Application Needs via
External Properties
Powerful Means of Reuse
Examples
GUI Button with Property to Allow Button
Name to be Set
Account Management Component that Allows
Account Database Location to be Set
Properties Can be Very Complex and Offer
Significant Power to Application Builders
JR&B-1.6
CSE298
CSE300
Java Beans Fundamentals
Supported within IDEs
Visual Age, JBuilder, PowerJ, Visual Café
Construct JavaBeans Component as Specialized
Java Classes with Enhanced Capabilities
Three-Part Architecture
Events
Notifies Others When Something Has Occurred
Delegation-Event Model of AWT
Properties
Define the Characteristics of the Bean
Methods
Utilized to Define a Property
JR&B-1.7
CSE298
CSE300
Architecture: Events
Events
Notifies Others When Something Has Occurred
Delegation-Event Model of AWT
Event Elements
Eventobjects
Components Sends to Listener
Eventlisteners
In Order to Register an Eventlistener With a
Component, the Component Must Understand the
Event Set
Event Sources
We’ll Discuss Shortly and Revisit in Detail with
Java RMI
JR&B-1.8
CSE298
CSE300
Architecture: Properties
Example: AWT Textfield
User Will See Properties for the Caret Position,
Current Text, and the Echo Character, etc.
Methods Used to Define a Property
public void setPropertyName(PropertyType value);
public PropertyType getPropertyName();
The Name of the Property is Propertyname
The Datatype is Propertytype
Only One Method Present the Property is ReadOnly (Set Missing)
Or the Property is Write-only (Get Missing)
JR&B-1.9
CSE298
CSE300
Architecture: Methods
Methods
Public
Available for Anyone to Call
Beaninfo and Getmethoddescriptors Method
Restricts Which Methods Are Visible to the
Beanbuilder/Integration Tool
The Getmethoddescriptors Method Reports All
the Methods of a Bean
Supports Introspection
Beaninfoclass
Customize a Bean's Appearance to an Integration
Tool
JR&B-1.10
CSE298
CSE300
Abilitiy
Persistence
Ability of an Object to Store its State
Object Serialization Saves All Non-static and
Non-transient Instance Variables of an Object
Objectinput and Objectoutput Interfaces
The Basis for Serialization Within Java.
Objectinputstream and Objectoutputstream
Classes
Implement the Objectinput and Objectoutput
Interfaces
JR&B-1.11
CSE298
CSE300
Five Defining Features
Introspection
Allow a Builder Tool to Analyze How a Bean
Works
Customization
User is Allowed to Alter the Appearance and
Behavior of a Bean
Events
Firing of Events
Inform Builder Tools About Both the Events
They Can Fire and Handle
JR&B-1.12
CSE298
CSE300
Five Defining Features
Properties
Beans Can Be Manipulated Programmatically
Support the Customization as Mentioned
Persistence
Customized Beans Can Have Their State Saved
and Restored
Work in a Constructed Application Can Be
Restored by an Application Builder's Save and
Load Menu Commands
Beans Are Used Primarily With Builder Tools
Programmatic Interfaces Allow Beans to Be
Manually Manipulated by Text Tools
JR&B-1.13
CSE298
CSE300
Differences Between Beans and Classes
Introspection
Process of Determining the Supported
Properties, Methods, and Events of a Bean
Introspector Class
Provides Access to the Beaninfo for the Bean
Component Via Its getBeanInfo Method
Code
TextField tf = new TextField ();
BeanInfo bi = Introspector.getBeanInfo
(tf.getClass());
Alternative to Introspector Class
Provides Access Directly Through the Use of
the Reflection API
JR&B-1.14
CSE298
CSE300
Introspection Tools
Differentiates Beans From Typical Java Classes
Recognize Predefined Patterns in Class Definitions
and Method Signatures
Able to "Look Inside" a Bean to Determine Its
Properties and Behavior
Require That Method Signatures Within Beans
Must Follow a Certain Pattern
Recognize How Beans Can Be Manipulated at
Design and Run Time
Pattern Signatures are Designed to Be Recognized
by Human Readers and Builder Tools
JR&B-1.15
CSE298
CSE300
Bean vs. Class
A Bean's State Can Be Manipulated at Design Time
in Contrast to Classes at Run Time
Beans Attributes and Behaviors
Published by Special Method Signature Patterns
Recognized by Beans-Aware Application
Construction Tools
What to Use for Software Modules?
Beans are Better for Software Components
Visually Manipulated Within Builder Tools
Classes are Better for Functionality Through a
Programmatic (Textual) Interface
An SQL API Would Be Better Packaged Through a
Class Library
JR&B-1.16
CSE298
CSE300
Event Model
Three Elements
Eventobject
Eventlistener
Eventsource (the Bean)
Eventobject
Basis of All Beans Events
Java.Util.Eventobject Class
Require Programmer to Subclass an
Eventobject to Have a Specific Event Type
JR&B-1.17
CSE298
CSE300
Java 1.1 Delegation Event Model
JR&B-1.18
CSE298
CSE300
Example: Event for Employee’s Hire Date
public class HireEvent extends EventObject {
private long hireDate;
public HireEvent (Object source) {
super (source);
hireDate = System.currentTimeMillis();
}
public HireEvent (Object source, long
hired) {
super (source);
hireDate = hired;
}
public long getHireDate () {
return hireDate;
}
}
JR&B-1.19
CSE298
CSE300
EventListener
Definition
Entity That Desires Notification When an Event
Happens
Receives the Specific Eventobject Subclass As
a Parameter
JR&B-1.20
CSE298
CSE300
EventListener
Eventlistener Interface
Empty Interface
Acts as a Tagging Interface That All Event
Listeners Must Extend
Eventtypelistener Name of Listener Interface
The Name for the New Hireevent
Listener Would Be Hirelistener
Method Names Should Describe the Event
Happening
Code
public interface HireListener
extends java.util.EventListener {
public abstract void hired (HireEvent e);
}
JR&B-1.21
CSE298
CSE300
EventSource
Eventsource
Defines When and Where an Event Will
Happen
Hireevent and Hirelistener Are Required for an
Event Source to Function
Sends Notification to Registered Classes When
the Event Happens
JR&B-1.22
CSE298
CSE300
EventSource: Methods
Registration Process Method Patterns
public synchronized void
addListenerType(ListenerType l);
public synchronized void
removeListenerType(ListenerType l);
Maintaining Eventsource Code
private Vector hireListeners = new Vector();
public synchronized void
addHireListener(HireListener l) {
hireListeners.addElement (l);
}
public synchronized void
removeHireListener (HireListener l) {
hireListeners.removeElement (l);
}
JR&B-1.23
CSE298
CSE300
EventSource: Hiring Example
protected void notifyHired () {
Vector l;
// Create Event
HireEvent h = new HireEvent (this);
// Copy listener vector so it won't change while
firing
synchronized (this) {
l = (Vector)hireListeners.clone();
}
for (int i=0;i<l.size();i++) {
HireListener hl = (HireListener)l.elementAt (i);
hl.hired(h);
}
}
JR&B-1.24
CSE298
CSE300
What is Enterprise Java Beans ?
Expansion of Java Beans (Client-side) to Support
Server Side Reusable Components
Server Components Run on Application Server
EJB Integral Part of Java Technology
Component Architecture for Distributed Systems
Multi-Tier Distributed Architecture
Movement of Application Logic from Client to
Server Side
Creation of “Thin”, Easier to Maintain Clients
Framework for Creating Middle Ware
Integration of “New” and “Old” Technologies
RMI, IIOP, CORBA, RPC, Active X, etc.
JR&B-1.25
Designer and Developer Roles in
Enterprise Java Beans (EJB)
CSE298
CSE300
Towards “Highly Scalable, Highly Available,
Highly Reliable, Highly Secure, Transaction
Distributed Applications”
Enterprise Bean Provider
Creates and Sells EJBs
Application Assembler
Uses EJBs to Build an Application
EJB Server Provider
Creates and Sells EJB Server
EJB Container Provider
Creates and Sells EJB Containers
Server Provider Will Likely Provide Containers
JR&B-1.26
CSE298
CSE300
EJB Roles & Deployment
JR&B-1.27
CSE298
CSE300
Utilizing EJB Technology
JR&B-1.28
CSE298
CSE300
The EJB Architecture
EJB Servers: Analogous to CORBA ORB
Server Software
Provides Naming and Transaction Services
Makes Containers Visible
EJB Containers: Interface Between EJB Bean and
Outside World
Client Never Accesses Bean Directly
Access via Container-Generated Methods
These Methods Then Call the Bean’s Methods
EJB Clients
Locate EJB Containers Via JNDI
Make Use of EJB Beans
Enterprise Java Beans - Discussed Shortly
JR&B-1.29
CSE298
CSE300
Recall CORBA
JR&B-1.30
CSE298
CSE300
EJB Container
JR&B-1.31
CSE298
CSE300
Enterprise Java APIs
JR&B-1.32
Enterprise Java Beans
Session Beans
CSE298
CSE300
Associated With a Particular Client
Performs Operations on Behalf of Client
Accessing a Database
Performing Calculations
Created and Destroyed by a Client
Can be Transactional - But, Do Not Survive
System Shutdown
Can be Stateless or Maintain Conventional State
Across Methods and Transactions
Must Manage Own Persistent Data
JR&B-1.33
Enterprise Java Beans
Entity Beans
CSE298
CSE300
Object Representation of Persistent Data
Maintained in Permanent Store (Database
Identifiable by Primary Key
Shared by Multiple Clients
Persist Across Multiple Invocations
Survive System Shutdown
Created by
Inserting Data into Database
Creating an Object Instance
JR&B-1.34
Model for Persistence
Passivation/Activation
CSE298
CSE300
Programmatic Model for Managing Persistent
Objects
EJB Server has the Right to Manage its Working
Set
Passivation
Saves State of a Bean to Persistent Storage
Then Swaps Bean Out
Activation
Restores State of a Bean From Persistent
Storage,Then Swaps Bean in
Applies to Both Session and Entity Beans
JR&B-1.35
CSE298
CSE300
Stateless vs. Stateful Session Beans
Stateless
No Internal State
Do Not Need to Be "Pass-ivated"
Can Be Pooled to Service Multiple Clients
Stateful
Possess Internal State
Need to Handle Passivation/Activation
One Per Client
JR&B-1.36
CSE298
CSE300
Persistent Session Beans
Session Beans Can Be Saved and Restored Across
Client Sessions
To Save
Call the Session Bean’s getHandle() Method
Returns a Handle Object
To Restore
Call the Handle Object’s getEJBObject()
Method
JR&B-1.37
CSE298
CSE300
Entity Bean Persistence
Container-Managed
Container is Responsible for Saving State
In Deployment Descriptor, Specify ContainerManaged Fields
Persistence Independent of Data Source
Bean-Managed
Bean is Responsible for Saving its Own State
Container Doesn’t Need to Generate DB Calls
Less Adaptable; Persistence is Hard-Coded
JR&B-1.38
CSE298
CSE300
Writing an EJB Client
Locate the Bean Container
Allocate a Bean, If Needed
Use the Bean
Dispose of the Bean
//An idealized EJB client
import paul.ejb.restaurant.*;
public class EJBClient{
public static void main(String[] argv){
//get JNDI naming context
javax.naming.Context initialContext = new
javax.naming.InitialContext();
//use context to look up EJB home interface
RestaurantHome rh = initialContext.lookup(“RestaurantHome”);
//use home interface to create a session object
Restaurant r = rh.Create(“Burger Heaven”);
//invoke business methods
r.order(“cheeseburger”);
//remove session object
r.remove();
}
}
JR&B-1.39
CSE298
CSE300
Writing a Session Bean
Create Remote Interface
Create Home Interface
must extend javax.ejb.EJBHome interface
create() methods, remove() methods
Implement Create Methods
must extend javax.ejb.EJBObject interface
must give prototypes for business methods
class needn’t say “implements”; this is handled by the container
called by container at creation time
Implement the SessionBean Interface
ejbActivate() - called when bean is activated
ejbPassivate() - called when bean is passivated
ejbRemove() - called when bean is destroyed
setSessionContext(SessionContext ctx) - called by container to give bean
a context
JR&B-1.40
CSE298
CSE300
Session Bean Example
package paul.ejb.restaurant.server;
public class OrderBean implements SessionBean{
private transient SessionContext ctx;
private String order;
//can have many create methods
public void ejbCreate () throws Exception {
//initialization of class variables here
}
//business method
public boolean order(String order) {
this.order = order;
System.out.println("order received for " + order);
return true;
}
//these methods are required by the SessionBean interface
public void ejbActivate() throws Exception {
}
public void ejbDestroy() throws Exception {
}
public void ejbPassivate() throws Exception {
}
public void setSessionContext(SessionContext ctx) throws
Exception {
this.ctx = ctx;
}
}
JR&B-1.41
CSE298
CSE300
Writing an Entity Bean
Implement the EntityBean Interface
ejbActivate() // called on activation
ejbPassivate() // called on passivation
ejbLoad() // tells bean to load state from database
ejbStore() // tells bean to store state in database
ejbRemove() // called when client calls remove()
setEntityContext() // called by container when instance has been created
unsetEntityContext() // called by container before removing the instance
must also implement ejbFind() // allows client to look up EJB objects
Optionally Implement create() Methods
Create Remote Interface
must extend javax.ejb.EJBObject interface
Create Home Interface
JR&B-1.42
CSE298
CSE300
Entity Bean Example
package paul.ejb.entity.server;
public class ExampleBean implements EntityBean
{
private transient EntityContext ctx;
//notice: no finder method -- generated at deployment time by container provider
//can have multiple create methods
public void ejbCreate () throws Exception {
}
//business method
public boolean doSomething () {
}
//required methods for EntityBean interface
public void ejbActivate() throws Exception {
}
public void ejbDestroy() throws Exception {
}
public void ejbPassivate() throws Exception {
}
public void ejbLoad() throws Exception {
}
public void ejbStore() throws Exception {
}
public void setEntityContext (EntityContext ctx) throws Exception {
this.ctx = ctx;
}
JR&B-1.43
CSE298
CSE300
Deploying EJBs
EJBs Deployed As .SER Files: Serialized Instance
Manifest File Used to List EJBs
Must Also Provide a “Deployment Descriptor”
Sample Entry
Name: paul.RestaurantDeployment.ser
Enterprise-Bean: True
“Name” Line
Describes a Serialized Deployment Descriptor
“Enterprise-Bean” Line
Indicates Whether the Entry Should Be Treated
as an EJB
(Not All Entries Need to Be EJBs)
JR&B-1.44
CSE298
CSE300
Who’s Announced EJB Support?
WebLogic
IBM
Oracle
GemStone
BEA
Borland
Netscape
Lotus
Forte
Progress
Novell
Novera
Borland
Informix
IONA
More...
JR&B-1.45
Typical Development and Deployment
Scenario
CSE298
CSE300
EJB Server Provider
Creates and Sells an EJB Server
Provides EJB Containers That Will Run on
These Servers
EJB Providers
Individuals Responsible for Developing the
EJBs
Provide “Tools” and “Components” for DownStream Usage
Application Assemblers
Individuals that Utilize Pre-Built EJBs to
Construct Their Domain-Specific Applications
Utilize “State-of-Art-Tools” for EJB and JB
JR&B-1.46
CSE298
CSE300
EJB Component-Based Architecture
EJB Server
EJB Client
Invoke EJB
Container
Methods
Enterprise
Java Bean
Invoke
EJB
Methods
EJB Container
JR&B-1.47
CSE298
CSE300
Client-Server Component Model
JR&B-1.48
CSE298
CSE300
Client-Server Component Relationship
JR&B-1.49
CSE298
CSE300
Client-Server Component Relationship
(Concluded)
JR&B-1.50
CSE298
CSE300
EJB Server Example
JR&B-1.51
CSE298
CSE300
EJB Server Example (continued)
JR&B-1.52
CSE298
CSE300
EJB Server Example (Concluded)
JR&B-1.53
CSE298
CSE300
Three-Tier Architecture Concept
JR&B-1.54
CSE298
CSE300
Two-Tier, Three-Tier, Four-Tier
Example Architectures
From: http://java.sun.com/javaone/javaone98/sessions/T400/index.html
JR&B-1.55
CSE298
CSE300
Wombat Securities
Web Access to Brokerage Accounts
Only HTML Browser Required on Front End
"Brokerbean" EJB Provides Business Logic
Login, Query, Trade Servlets Call Brokerbean
Use JNDI to Find EJBs, RMI to Invoke Them
Order and History Records from Java Blend
Product
Records Mapped to Oracle Tables, JDBC Calls
JR&B-1.56
CSE298
CSE300
Four-Tier Architecture Example
JR&B-1.57
CSE298
CSE300
Initialization Code
class LoginServlet extends HttpServlet {
private Broker createBroker(String account, String password) {
/* Use JNDI to find Broker EJB home, then return new EJB */
Context initialContext = new InitialContext();
BrokerHome brokerHome = (BrokerHome)
initialContext.lookup("wombat/Broker");
return brokerHome.create(account, password);
}
public doPost
(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
/* Get account and password from HTML and create EJB*/
String account = req.getParameter("Account");
String password = req.getParameter("Password");
Broker brk = createBroker(account, password);
...}
...}
JR&B-1.58
CSE298
CSE300
User Interface Code
class TradeServlet extends HttpServlet {
...
public void doPost(HttpServletRequest req,
HttpServletResponse res) throws ServletException {
/* Get parameters from HTML and session object */
HttpSession session = req.getSession(true);
String ticker = req.getParameter("Symbol"); ...
Broker brk = (Broker)
session.getValue("LoginServlet.BrokerRef");
/* Place order and print confirmation as HTML */
String orderNum = brk.submitOrder(txType, ticker, shares);
printOrderSubmitted(out, account, orderNum);
... }
}
JR&B-1.59
CSE298
CSE300
Business Logic Code
class BrokerBean implements SessionBean {
public void ejbCreate (String account, String password) ...
public SecurityRecord getAcctPositions ( ) ...
public OrderRecord getOrderStatus ( ) ...
public String getQuote(String ticker) ...
public String submitOrder(String txType, String ticker...)
...
public HistoryRecord getAcctHistory ( ) ...
private boolean login (...) ...
... etc ...
}
JR&B-1.60
CSE298
CSE300
Database Access Code
SQL:
CREATE TABLE ORDER(
ORDERNUM INTEGER NOT NULL,
CUST INTEGER NOT NULL,
TICKER VARCHAR(5), ...
PRIMARY KEY (ORDERNUM),
FOREIGN KEY (CUST) REFERENCES CUSTOMER);
Java:
class Order{
int orderNum;
Customer cust;
String ticker;
...}
Java Blend Automatically Maps Classes to/from
Relational Tables at Compile-Time and Run-Time
JR&B-1.61
CSE298
CSE300
Nocturnal Aviation, Inc.
Passenger Check-in for Regional Airline
Local Database for Seating on Today's Flights
Clients Invoke EJBs at Local Site Through RMI
EJBs Update Database and Queue Updates
JMS Queues Updates to Legacy System
DBC API Used to Access Local Database
JTS Synchs Remote Queue With Local Updates
JR&B-1.62
CSE298
CSE300
Three-Tier Example
JR&B-1.63
CSE298
CSE300
Santa Cruz Widgets
Small Manufacturer Previously on C++
New Order Entry, Inventory, and Invoicing
Applications in Java Programming Language
Existing Customer and Order Database
Most of Business Logic in Stored Procedures
Tool-generated GUI Forms for Java Objects
Located Company on Web Using Widgets and Tcl,
but Not Widgets and Java
JR&B-1.64
CSE298
CSE300
Santa Cruz Widgets (2-tier)
JR&B-1.65
CSE298
CSE300
Architecture Comparisons
Two-tier Through JDBC API: Simplest
Multi-tier: Separate Business Logic, Protect
Database Integrity, More Scaleable
JMS Queues Vs Synchronous (RMI or IDL):
Availability, Response Time, Decoupling
JMS Publish & Subscribe: Off-line Notification
RMI IIOP Vs JRMP Vs Java IDL:
Standard Cross-language Calls or Full Java
Functionality
JTS: Distributed Integrity, Lockstep Actions
JR&B-1.66
CSE298
CSE300
Further API Comparisons
Servlets: Simplifies HTML, Connections, Web
Front-Ending Legacy Systems
EJBs: Simplifies Components, Scalability,
Transactions, Multi-threading, Security, State
JDBC Vs ODMG Vs SQLJ API:
Programming Simplicity, Portability, SQL
Knowledge
JNDI: Standardized Name Service Access
Enterprise Java APIs vs. Proprietary:
Multi-Platform, Multiple Providers
JR&B-1.67
CSE298
CSE300
Summary & Key Messages
Enterprise Java APIs: EJB, JNDI, Java IDL, RMI,
JDBC, ODMG, SQLJ, JMS, JTS, JMAPI, Servlets
Wide Variety of Architectural Alternatives:
Synchronous/Asynchronous, Multi-Tier,
Transactional, HTTP/JRMP/IIOP
Benefits:
WORA Portability
Multiple Vendors
Legacy Connectivity
Java Programming Language Productivity
JR&B-1.68
CSE298
CSE300
EJB Roadmap
API
Specification
Complete
Products
EJB
JNDI
JIDL
RMI
JDBC
ODMG
SQLJ
JMS
JTS
JMAPI
Sevlets
JavaSoft
JavaSoft
OMG
JavaSoft
JavaSoft
Consortium
Consortium
JavaSoft
OMG
JavaSoft
JavaSoft
1.0Q1
1.0 done
1.0 Q2
1.0 done
2.0 Q2
2.0 done
1.0 Q2
1.0 Q2
1.0 done
1.0 Q2
1.1 done
See Partners
Download SP
JDK 1.2
JDK 1.1
JDK 1.2 Partner
JavaBlend
See Partners
See Partners
Partners
See Partners
Java Web Server
JR&B-1.69
CSE298
CSE300
What Is the Java Blend Product?
Product That Integrates Java Programming
Language Objects With Enterprise Data
Provides a Single Object Model Based on Java
Programming Language Classes
Automatic Persistent Storage for Java
Application Objects
Easy, Automatic Access to Existing Relational
Databases From Java Applications
Result of Joint Development by the Javasoft
Division, Baan and Tech@spree
JR&B-1.70
CSE298
CSE300
JavaBlend Applications
JavaBlend Software Provides Mapping Capability
Between Database Tables and Java Application
Classes
Programmer Deals Only With Java Programming
Language Objects, and Does Not Need to Know
SQL or Database Representation
JR&B-1.71
CSE298
CSE300
Java Blend Components
Flexible Development Tool for Automatic
Bi-Directional Mapping
Objects to Relational
Relational to Objects
Powerful Runtime Environment
Transaction Management System
Query Processor
Cache Management System
JR&B-1.72
CSE298
CSE300
Java Blend Runtime Architecture
JR&B-1.73
Java Blend Software and Enterprise
JavaBeans Technology
CSE298
CSE300
EJB Technology Provides Scaleable Component
Architecture for Business Applications
Java Blend Product Provides Transparent
Persistence for Enterprise Javabeans Technology
Beans Implementing Business Logic Use Java
Blend for Database Access
Java Blend Product Works With the Enterprise
Javabeans API Transaction Mechanisms
JR&B-1.74