430 likes | 585 Views
Enterprise JavaBeans. Chapter 14. Objectives. Explore an enterprise application’s needs for secure distributed access, scalability with high performance, robustness, data persistence with transactional integrity, and management of distributed and often disparate resources
E N D
Enterprise JavaBeans Chapter 14 Java Programming: Advanced Topics
Objectives • Explore an enterprise application’s needs for secure distributed access, scalability with high performance, robustness, data persistence with transactional integrity, and management of distributed and often disparate resources • Discover how the EJB framework provides the quality of services enterprise applications require • Learn how stateful and stateless session EJBs provide components that perform business logic Java Programming: Advanced Topics
Objectives (Cont.) • Learn how to program an EJB client • Discuss exception handling in EJBs and EJB clients • Learn how entity beans represent persistent data in Java objects Java Programming: Advanced Topics
Objectives (Cont.) • Discuss mapping fields of entity beans to elements in databases using CMP and BMP • Learn how to use container-managed relationships and EJB query language with container-managed persistence • Learn what Java Message Service is and learn how message-driven beans consume asynchronous messages Java Programming: Advanced Topics
Objectives (Cont.) • Discuss transactional properties of EJBs • Discuss elements of application security that relate to EJBs • Consider some best practices for designing applications that use EJBs Java Programming: Advanced Topics
Enterprise Programming • EJB specification: a description of this environment and the framework for building distributed objects that implement a standard interface • Distributed systems:software systems that reside on several physical hosts • the components must interoperate over a network that may be a local area network (LAN) or the Internet Java Programming: Advanced Topics
Enterprise Programming (Cont.) • Scalability: the ability of a system to continue to give high performance as the number of users increases • Persistence: any data that outlives any software component • Resource managementis required whenever the system makes high demands on databases and other resources Java Programming: Advanced Topics
Enterprise Programming (Cont.) • Connection pooling:keeping a set of connections open so that different software components can be given an open connection for short-term exclusive use • Security: usually of critical importance in enterprise applications • Transactional integrity: often the quality that most concerns developers of enterprise applications Java Programming: Advanced Topics
What are EJBs • Enterprise JavaBeans(EJBs): server-side software components that conform to the J2EE architecture for development and deployment of distributed systems • J2EE-compliant application servers must provide a run-time environment for the EJBs: an EJB container Java Programming: Advanced Topics
What are EJBs (Cont.) • EJBs come in three basic kinds: • Session beans: • can perform any kind of processing • Entity beans: • represent persistent data • Message-driven beans (MDB): • have a specialized purpose and are used with messaging software Java Programming: Advanced Topics
What are EJBs (Cont.) • The major components of an EJB: • Bean class • Home interface • Local or Remote interface Java Programming: Advanced Topics
MVC Architecture Java Programming: Advanced Topics
EJB Containers and Services • The role of the EJB container is to provide the following: • The distribution infrastructure and a naming service to help client code locate and access EJBs. • The ability to place EJBs in a scalable architecture • Support for concurrent access • Resource management, including connection pooling • Security services in addition to the secure environment that can be configured for applications loaded into the application server • Transaction managers that interact with JDBC drivers and resource adapters Java Programming: Advanced Topics
J2EE Enterprise Application Packaging and Deployment • EJBs are always packaged in J2EE enterprise applications • Files that compose EJBs are packaged in jar files • An EJB jarmust contain a deployment descriptor file Java Programming: Advanced Topics
J2EE Packaging into Archive Files Java Programming: Advanced Topics
Session EJBs • Session EJBs can do general purpose processing • They are associated with the client that calls them • There are two types of session EJBs: • stateful • stateless Java Programming: Advanced Topics
Stateless Session EJBs • Stateless session beans can be shared among clients • Methods defined in the javax.ejb.SessionBean interface are call-back methods that control the lifecycle of the bean, that called by the container Java Programming: Advanced Topics
Stateless Session EJBs (Cont.) • Steps to create a stateless session EJB: • 1. Define a class that extends the SessionBeaninterface • 2. Create a home interface • 3. Add business methods to the session bean class and write implementations of those methods • 4. Add a remote interface and include all the business methods that can be called by remote clients • 5. Write the deployment descriptor Java Programming: Advanced Topics
Stateful Session EJBs • Stateful session EJBs retain conversational state between method calls and are used by only one client • Conversational state: information that must be retained as long as the client is actively interacting with the application • Transactional state: data that must be permanently recorded when the client activity ends Java Programming: Advanced Topics
EJB Clients • The EJB 2.0 specification adds interfaces to all entity and session beans specifically for use by co-located clients • There are four interfaces that you can define for a session or entity bean Java Programming: Advanced Topics
The Client Interfaces Java Programming: Advanced Topics
The Client Interfaces (Cont.) Java Programming: Advanced Topics
The Client Interfaces (Cont.) Java Programming: Advanced Topics
The Client Interfaces (Cont.) Java Programming: Advanced Topics
Writing EJB Clients • The client starts by accessing the JNDI namespace, by instantiating an object of type javax.naming.InitialContext • When the client has the EJB home, it uses a createmethod to get a handle to the remote interface Java Programming: Advanced Topics
Handling Exceptions in EJB Clients • Define and use application-level exception classes to encapsulate anticipated problem conditions • Application-level exceptions: exceptions that business logic can anticipate and possibly recover from. Java Programming: Advanced Topics
Entity EJBs • Entity beans represent persistent data • Use entity beans as the interface between Java components and relational or object-oriented databases • The container uses the primary key to locate the data when a client requests an entity bean and creates only one bean to represent that data in a Java object Java Programming: Advanced Topics
EJB to Database Schema Mapping • There are three approaches to database schema mapping: • Top-downmapping: • possible when a new database is required and Java developers are allowed to create databases • Bottom-up mapping: • occurs when you have a database and can design your EJBs to match the tables and columns defined in the database schema • Meet-in-the-middle mapping: • most common solution in practice Java Programming: Advanced Topics
EJB to Database Schema Mapping (Cont.) • The EJB specification allows two approaches: • Container Managed Persistence (CMP): • involves declaring the mapping between the deployment descriptor and delegating all code generation to the container • Bean Managed Persistence (BMP): • is a do-it-yourself solution Java Programming: Advanced Topics
Sample CMP Entity Bean Java Programming: Advanced Topics
EJB Query Language • Enterprise JavaBean Query Language (EJB QL) was introduced in the EJB 2.0 specification to support the abstract persistence model • EJB QL: language for expressing the equivalent of SQL SELECT statements for CMP beans Java Programming: Advanced Topics
Comparing EJB QL and SQL Statements Java Programming: Advanced Topics
Using EJB QL Java Programming: Advanced Topics
Message-Driven Beans • An message-driven bean (MDB) initiates processing in response to an external event • To create an MDB, build the bean class • The MDB class must implement javax.ejb.MessageDrivenBean and javax.jms.MessageListener Java Programming: Advanced Topics
A Deployment Descriptor with MDB Java Programming: Advanced Topics
A Possible Scenario that Uses MDBs Java Programming: Advanced Topics
EJB Transactional Characteristics • The EJB specification gives you options for defining transactions: • Container managed transactions (CMT) • Bean managed transactions (BMT) • Client demarked transaction Java Programming: Advanced Topics
EJB Transactional Levels Java Programming: Advanced Topics
EJB Transactional Levels (Cont.) Java Programming: Advanced Topics
EJB Transactional Levels (Cont.) Java Programming: Advanced Topics
EJB Security • The concept of passing security roles down the call stack as EJB methods call other EJB methods is called delegation • Role-based security can be applied to entire EJBs or to individual methods • EJB developers are not responsible for user authentication or authorization (mapping the user to a role) Java Programming: Advanced Topics
Summary • EJBs are distributable server-side components that run in EJB containers provided by J2EE-compliant application servers • EJBs come in three basic kinds: session beans, entity beans, and message-driven beans (MDB) • EJB clients locate bean instances by looking up the name in a JNDI server • Stateless session beans can be shared among clients, while stateful session EJBs are used by only one client Java Programming: Advanced Topics
Summary (Cont.) • Entity beans represent persistent data and can be designed for container-managed persistence (CMP) or bean-managed persistence (BMP) • EJB QL is a SQL-like language for writing database queries in terms of CMP bean classes and fields • The concept of passing security roles down the call stack as EJB methods call other EJB methods is called delegation Java Programming: Advanced Topics