Enterprise Java Beans Bina Ramamurthy 9172020 B Ramamurthy

  • Slides: 24
Download presentation
Enterprise Java Beans Bina Ramamurthy 9/17/2020 B. Ramamurthy 1

Enterprise Java Beans Bina Ramamurthy 9/17/2020 B. Ramamurthy 1

Introduction J 2 EE (Java 2 Enterprise Edition) offers a suite of software specification

Introduction J 2 EE (Java 2 Enterprise Edition) offers a suite of software specification to design, develop, assemble and deploy enterprise applications. It provides a distributed, componentbased, loosely coupled, reliable and secure, platform independent and responsive application environment. 9/17/2020 B. Ramamurthy 2

J 2 EE Technologies Enterprise Java Bean Technology 2. 0 JDBC API 2. 0

J 2 EE Technologies Enterprise Java Bean Technology 2. 0 JDBC API 2. 0 Java Servlet Technology 2. 3 Java Server Pages Technology 1. 2 Java Messaging Service 1. 0 Java Naming and Directory Interface 1. 2 Java Transaction API 1. 0 Java Mail API 1. 2 Javabeans activation framework 1. 0 Java API for XML Processing 1. 1 Java Connector Architecture 1. 0 Java Authentication and Authorization Service 1. 0 Tools: deploytool (scripts etc. ) 9/17/2020 B. Ramamurthy 3

Systems and Application Integration The J 2 EE APIs enable systems and applications integration

Systems and Application Integration The J 2 EE APIs enable systems and applications integration through the following: n n n n Unified application model across tiers with enterprise beans Simplified response and request mechanism with JSP pages and servlets Reliable security model with JAAS XML-based data interchange integration with JAXP Simplified interoperability with the J 2 EE Connector Architecture Easy database connectivity with the JDBC API Enterprise application integration with messagedriven beans and JMS, JTA, and JNDI 9/17/2020 B. Ramamurthy 4

J 2 EE Technology Architecture html Web clients Application clients IIOP, others Java Server

J 2 EE Technology Architecture html Web clients Application clients IIOP, others Java Server pages Servlets Enterprise Java Beans Components Server platform 9/17/2020 JTS JMAPI JNDI JMS JAXP JDBC JAAS B. Ramamurthy 5 …

Enterprise Java Bean(EJB) An enterprise bean is a server-side component that contains the business

Enterprise Java Bean(EJB) An enterprise bean is a server-side component that contains the business logic of an application. At runtime, the application clients execute the business logic by invoking the enterprise bean's methods. Main goal of Enterprise Java Bean (EJB) architecture is to free the application developer from having to deal with the system level aspects of an application. This allows the bean developer to focus solely on the logic of the application. 9/17/2020 B. Ramamurthy 6

Roles in EJB Development Bean developer: Develops bean component. Application assembler: composes EJBs to

Roles in EJB Development Bean developer: Develops bean component. Application assembler: composes EJBs to form applications Deployer: deploys EJB applications within an operation environment. System administrator: Configures and administers the EJB computing and networking infrastructure. EJB Container Provider and EJB server provider: Vendors specializing in low level services such as transactions and application mgt. 9/17/2020 B. Ramamurthy 7

Enterprise Java Bean (EJB) Deployable unit of code. At run-time, an enterprise bean resides

Enterprise Java Bean (EJB) Deployable unit of code. At run-time, an enterprise bean resides in an EJB container. An EJB container provides the deployment environment and runtime environment for enterprise beans including services such as security, transaction, deployment, concurrency etc. Process of installing an EJB in a container is called EJB deployment. 9/17/2020 B. Ramamurthy 8

Enterprise Application with many EJBs Web. Client EJB 2 EJB 1 EJB 4 EJB

Enterprise Application with many EJBs Web. Client EJB 2 EJB 1 EJB 4 EJB 5 EJB 3 EJB 6 Appl. Client Lets consider a shopping front application and figure out the possible components (EJBs) 9/17/2020 B. Ramamurthy 9

Deployment with Multiple EJB Clients Web Container 1 Deploys: Web. App 1 EJB Container

Deployment with Multiple EJB Clients Web Container 1 Deploys: Web. App 1 EJB Container 1 Deploys : EJB 1, EJB 2, EJB 3 Client Container 1 Deploys : Client 1 9/17/2020 EJB Container 2 Deploys : EJB 4 Client Container 3 Deploys : EJB 5, EJB 6 B. Ramamurthy 10

Business Entities, Processes and Rules EJB Applications organize business rules into components. Components typically

Business Entities, Processes and Rules EJB Applications organize business rules into components. Components typically represent a business entity or business process. Entity: is an object representing some information maintained in the enterprise. Has a “state” which may be persistent. Example: Customer, Order, Employee, Relationships are defined among the entities: dependencies. 9/17/2020 B. Ramamurthy 11

Process Is an object that typically encapsulates an interaction of a user with business

Process Is an object that typically encapsulates an interaction of a user with business entities. A process typically updated and changes the state of the entities. A business process may have its own state which may exist only for the duration of the process; at the completion of the process the state ceases to exist. Process state may be transient or persistent. States ate transient for conversational processes and persistent for collaborative processes. 9/17/2020 B. Ramamurthy 12

Rules that apply to the state of an entity should be implemented in the

Rules that apply to the state of an entity should be implemented in the component that represents the entity. Rules that apply to the processes should be implemented in the component that represents the processes. 9/17/2020 B. Ramamurthy 13

EJB Types There are three types of EJBs: Entity, session and message-driven We will

EJB Types There are three types of EJBs: Entity, session and message-driven We will discuss message-driven bean in a separate discussion. The syntax of the session bean and entity bean client-view API is almost identical. But they have different life cycle, different persistence management, etc. EJBs can be stateless and stateful beans. 9/17/2020 B. Ramamurthy 14

Life Cycle Differences Session Bean Entity Bean Object state: Maintained by container Object Sharing:

Life Cycle Differences Session Bean Entity Bean Object state: Maintained by container Object Sharing: No sharing: per client State Externalization: State is inaccessible to other programs Transactions: Not recoverable Failure Recovery: Not guaranteed to survive failures 9/17/2020 Maintained by DB Shared by multiple client Accessible to other programs State changed transactionally and is recoverable. Survives failures and restored when the container restarts. B. Ramamurthy 15

Choosing Entity or Session Bean Entity (business entity) is typically implemented as entity bean

Choosing Entity or Session Bean Entity (business entity) is typically implemented as entity bean or a dependent object of an entity bean. Conversational (business) process as a session bean. Collaborative bean as an entity bean. Any process that requires persistence is implemented as an entity bean. When exposure to other applications are not needed for an entity or process (local/private process) then they are implemented as bean dependent objects. 9/17/2020 B. Ramamurthy 16

Parts of EJB class that implements the business methods and life cycle methods; uses

Parts of EJB class that implements the business methods and life cycle methods; uses other helper classes and libraries to implement. Client-view API: consists of EJB home interface and remote interface. n n Home interface: controls life cycle : create, remove, find methods Remote interface: to invoke the EJB object methods 9/17/2020 B. Ramamurthy 17

Parts of EJB (contd. ) Deployment Descriptor: XML document for bean assembler and deployer;

Parts of EJB (contd. ) Deployment Descriptor: XML document for bean assembler and deployer; n A declaration about EJB environment needed for customizing the bean to the operating environment. Container Runtime services include: transactions, security, distribution, load balancing, multithreading, persistence, failure recovery, resource pooling, state management, clustering. . 9/17/2020 B. Ramamurthy 18

Enterprise Bean Parts <<Home Interface>> Account. Home <<Remote Interface>> Account debit() credit() get. Balance()

Enterprise Bean Parts <<Home Interface>> Account. Home <<Remote Interface>> Account debit() credit() get. Balance() create() find() remove() <<Enterrpise Bean class> Account. Bean ejb. Create() ejb. Find() ejb. Remove() debit() credit() get. Balance() 9/17/2020 Deployment Descriptor name = Account. EJB class = Account. Bean home = Account. Home remote = Account type = Entity transaction = required …. . B. Ramamurthy 19

Account. Home Interface import java. rmi. Remote. Exception; import javax. ejb. Create. Exception; import

Account. Home Interface import java. rmi. Remote. Exception; import javax. ejb. Create. Exception; import javax. ejb. Finder. Exception; import java. util. Collection; public interface Account. Home extends javax. ejb. EJBHome { //create methods Account create (String last. Name, String first. Name) throws Remote. Exception, Create. Exception, Bad. Name. Exception; Account create (String last. Name) throws Remote. Exception, Create. Exception; // find methods Account find. By. Primary. Key (Account. Key primary. Key) throws Remote. Exception, Finder. Exception; Collection find. In. Active(Date since. When) throws Remote. Exception, Finder. Exception, Bad. Date. Exception; 9/17/2020 B. Ramamurthy 20

Account Interface import java. rmi. Remote. Exception; public interface Account extends javax. ejb. EJBObject

Account Interface import java. rmi. Remote. Exception; public interface Account extends javax. ejb. EJBObject { Big. Decimal get. Balance() throws Remote. Exception; void credit(Bi. GDecimal amount) throws Remote. Exception; Void debit(Big. Decimal amount) throws Remote. Exception, In. Sufficient. Funds. Exception; } 9/17/2020 B. Ramamurthy 21

Account. Bean class public class Account. Bean implements javax. ejb. Entity. Bean { //

Account. Bean class public class Account. Bean implements javax. ejb. Entity. Bean { // life cycle methods from home interface public Account. Key ejb. Create (String lat. Name, String first. Name) throws … {… public Account. Key ejb. Create(String last. Name) throws …{…} public Account. Key ejb. Find. By. Primary. Key(Account. Key primarykey)… {…} Public Collection ejb. Find. Inactive( Data sinec. When). . {…} // business methods from remote interface public Big. Decimal get. Balance() {…. } public void credit(Big. Decimal amt) {…} Public void debit(Big. Decimal amt) throws Insufficient. Fund. Exception {…. } // container callbacks from Entity. Bean container public ejb. Remove( ) throws Remove. Exception{ …} public void set. Entity. Context(Entity. Context ec) {…} public unset. Entity. Context(Entity. Context ec) {…} public void ejb. Activate() {…} public void ejb. Load() {…. } public void ejb. Store() {…. } 9/17/2020 B. Ramamurthy } 22

Deployment Descriptor … <entity-bean> <ejb-name>Account. EJB</ejb-name> <home>com. wombat. Accopunt. Home</home> <remote>com. wombat. Account</remote> <ejb-class>com.

Deployment Descriptor … <entity-bean> <ejb-name>Account. EJB</ejb-name> <home>com. wombat. Accopunt. Home</home> <remote>com. wombat. Account</remote> <ejb-class>com. wombat. Account. Bean</ejb-class> <persistence-type>Bean<persistence-type> <primary-key-class>com. wombat. Account. Key</primary-key-class> </entity-bean> … <container-transaction> <method> <ejb-name>Acoount. EJB</ejb-name> <method-name>*</method-name> </method> <trans-attribute>required</trans-attribute> 9/17/2020 B. Ramamurthy </container-transaction> 23

Summary J 2 EE environment provides a framework for bundling together the components into

Summary J 2 EE environment provides a framework for bundling together the components into an application and provide the applications necessary common services such as persistence, security, mail, naming and directory service etc. Next class we will look a complete running example. Browse through: 1. n 9/17/2020 http: //java. sun. com/j 2 ee/faq. html http: //java. sun. com/blueprints/guidelines/designing_en terprise_applications_2 e/index. html#chapters B. Ramamurthy 24