Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Enterprise JavaBeans Chapter 14 Java Programming: Advanced Topics 1 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 2 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 3 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 4 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 5 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 6 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 management is required whenever the system makes high demands on databases and other resources Java Programming: Advanced Topics 7 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 8 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 9 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 10 What are EJBs (Cont.) • The major components of an EJB: – Bean class – Home interface – Local or Remote interface Java Programming: Advanced Topics 11 MVC Architecture Java Programming: Advanced Topics 12 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 13 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 jar must contain a deployment descriptor file Java Programming: Advanced Topics 14 J2EE Packaging into Archive Files Java Programming: Advanced Topics 15 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 16 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 17 Stateless Session EJBs (Cont.) • Steps to create a stateless session EJB: – 1. Define a class that extends the SessionBean interface – 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 18 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 19 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 20 The Client Interfaces Java Programming: Advanced Topics 21 The Client Interfaces (Cont.) Java Programming: Advanced Topics 22 The Client Interfaces (Cont.) Java Programming: Advanced Topics 23 The Client Interfaces (Cont.) Java Programming: Advanced Topics 24 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 create method to get a handle to the remote interface Java Programming: Advanced Topics 25 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 26 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 27 EJB to Database Schema Mapping • There are three approaches to database schema mapping: – Top-down mapping: • 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 28 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 29 Sample CMP Entity Bean Java Programming: Advanced Topics 30 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 31 Comparing EJB QL and SQL Statements Java Programming: Advanced Topics 32 Using EJB QL Java Programming: Advanced Topics 33 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 34 A Deployment Descriptor with MDB Java Programming: Advanced Topics 35 A Possible Scenario that Uses MDBs Java Programming: Advanced Topics 36 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 37 EJB Transactional Levels Java Programming: Advanced Topics 38 EJB Transactional Levels (Cont.) Java Programming: Advanced Topics 39 EJB Transactional Levels (Cont.) Java Programming: Advanced Topics 40 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 41 Summary • EJBs are distributable server-side components that run in EJB containers provided by J2EEcompliant 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 42 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 43