Ejb (1)

377
-1

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
377
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ejb (1)

  1. 1. Enterprise JavaBeans Ruslana Svidzinska CSE690
  2. 2. What is EJB?q An EJB is a specialized, non-visual JavaBean that runs on a server.q EJB technology supports application development based on a multiplier, distributed object architecture in which most of application’s logic is moved from the client to the server.
  3. 3. Server Componentsq Server components are application components that run in an application server.
  4. 4. Java Application Serversq A Java application server provides an optimized execution environment for server-side Java application components.q A Java application server delivers a high-performance, highly scalable, robust execution environment specifically suited to support Internet enabled application systems.
  5. 5. WORAq The Enterprise JavaBeans architecture defines a standard model for Java application servers to support “Write Once, Run Anywhere” (WORA) portability
  6. 6. Component PortabilityEJB technology takes the WORA concept to a new level.EJB completely portable across any vendor’s EJB compliant application server. The EJB environment automatically maps the component to the underlying vendor-specific infrastructure services.
  7. 7. Overview of EJB TechnologyEJB Component Model Enterprise JavaBeans component model logically extends the JavaBeans component model to support server component. Server components are reusable, prepackaged pieces of application functionality that are designed to run in an application server. EJB can be assembled and customized at deployment time using tools provided by an EJB- compliant Java application server.
  8. 8. Simplifying Development.The EJB architecture provides anintegrated application framework.An EJB server automatically manages anumber of tricky middleware services onbehalf of the application components.EJB component-builders can concentrateon writing business logic rather thancomplex middleware
  9. 9. Simplifying Development (cont’d) RESULT: •Application get developed more quickly •Code is of better quality.
  10. 10. What EJB AccomplishesYou can take any Java class and with little effort makeit a distributed, secure, transactional classYou can take any data source and make the datasource appear to be a collection of Java objects – Eliminates distinction between data from a database and any other source – All information is accessed through Java objects – All SQL is cleanly encapsulated in Java objects q true object-oriented programming q high reusability – Database objects work with the full Java class
  11. 11. What EJB Means to Usq Developers can focus on writing business logic rather than writing low-level infrastructure like data access, concurrency, transactions, threading, etc. – Reduces development time – Reduces complexity – Increases quality and reliabilityq The knowledge about EJB is portable among many different products because EJB products are based on a common standardq Greater reuse because code is located in shareable, server objects
  12. 12. So....let’s take a look at Enterprise JavaBeans5 A specification from JavaSoft5 Enterprise JavaBeans defines a server component model for the development and deployment of Java applications based on a multi-tier, distributed object architecture5 The Enterprise JavaBeans specification defines: – A container model – A definition of the services the container needs to provide to an Enterprise JavaBean, and vice versa – How a container should manage Enterprise JavaBeans
  13. 13. Enterprise JavaBeans ArchitectureThe EJB architecture specifies theresponsibilities and interactions amongEJB entities  EJB Servers  EJB Containers  Enterprise Beans  EJB Clients Enterprise Enterprise Bean Bean EJB ContainerClients EJB Server
  14. 14. EJB Server Provides a Runtime Environment q The EJB Server provides system services and manages resources – Process and thread management – System resources management – Database connection pooling and caching – Management API EJB Server
  15. 15. EJB Container Provides a Run-time Environment for an Enterprise Beanq Hosts the Enterprise JavaBeansq Provides services to Enterprise JavaBeans – Naming – Life cycle management – Persistence (state management) – Transaction Management – Securityq Likely provided by server vendor EJB Container EJB Server
  16. 16. Enterprise JavaBeans q A specialized Java class where the real business logic lives – May be developer-written or tool-generated q Distributed over a network q Transactional q Secure q Server vendors provide tools that automatically generate distribution, transaction and security behavior Enterprise Enterprise Bean Bean EJB Container EJB Server
  17. 17. EJB Clients q Client access is controlled by the container in which the enterprise Bean is deployed q Clients locates an Enterprise JavaBean through Java Naming and Directory Interface (JNDI) q RMI is the standard method for accessing a bean over a network Enterprise Enterprise Bean Bean EJB Container Clients EJB Server
  18. 18. What’s Unique About EJB Declarative Programming Model q Mandates a container model where common services are declared, not programmed – At development and/or deployment time, attributes defining the bean’s transaction and security characteristics are specified – At deployment time, the container introspects the Enterprise JavaBean attributes for the runtime services it requires and wraps the bean with the required functionality – At runtime, the container intercepts all calls to the object y Provides transactional, threading and security behavior required before the method invocation y Invokes the method on the object y Cleans up after the call
  19. 19. Understanding EJB Components
  20. 20. JavaBeans vs Enterprise JavaBeansq Enterprise JavaBeans is a framework for building and deploying server-side Java componentsq JavaBeans is a framework for client-side Java componentsq Conceptually related because both are componentsq The specifications are differentq The specifications do not build on each other or rely on each other
  21. 21. What’s in the EJB Specification ~200 Pages of technical material for EJB vendorsq Goals for the Releaseq Roles and Scenariosq Fundamentals (Scope of EJB)q Session and Entity Beansq Transactions, Exceptions, Distributionq EJB Bean and Container Responsibilitiesq API Reference EJB Vendors Have to do all the WORK
  22. 22. Enterprise EJB Scenario Existing Enterprise Middleware EJB Application Clients Web Server Server CICS Programs Browser EJB Container Credit Card Servlet Shopping Databases Cart InventoryApplication SAP Modules EJB Server
  23. 23. An inside look at the various components of EJBq Bean Class is written by the developerq EJBHome and EJBObject interfaces and classes control access to the Bean class EJB Containerq Deployment Descriptor EJBHome EJBHome Interface and MANIFEST describe Class security and transactional characteristics of the Bean EJB Class EJBObject EJBObject Interface Class Written by Developer Generated at Development Generated at Deployment Deployment Manifest Descriptor EJB Server
  24. 24. EJBHome Interface and Classq Used to get a reference to a bean’s remote interfaceq Provides bean creation services – myFoo = fooHome.create() instead of myFoo = new foo() – Supports multiple signatures to create EJB instancesq Similar to class factory EJB Container in COM and CORBA EJBHome EJBHome Interface May be generated by Classq tools that come with an EJB serverq Also manages EJB: – querying (Entity Bean) – deleting (Entity Bean) EJB Server
  25. 25. Interface javax.ejb.EJBHomeq Home objects must implement this interfaceq Returns a reference to a bean by creating or finding itq Every bean has a EJBHome interface that provides methods for getting references to one or more beans – create methods are used to create new beans – there can be many create methods, similar to a class having many constructorsq Provides a bean removal interface alsoq The EJBHome Class implementation is provided by the EJB Server Provider
  26. 26. Sample EJBHome Interfacepublic interface CustomerHome extends EJBHome{ public abstract Customer create(String id, String name) throws RemoteException, CreateException; public abstract Enumeration findByName(String val) throws RemoteException, FinderException; public abstract RemoteEnumeration findStateByName(String val) throws RemoteException, FinderException; public abstract Customer findByPrimaryKey(CustomerKey pkey) throws RemoteException, FinderException; public abstract Customer findByPrimaryKey(CustomerKey pkey, int findSource) throws RemoteException, FinderException; public abstract CustomerState findStateByPrimaryKey(CustomerKey pkey, intfindSource) throws RemoteException, FinderException;}
  27. 27. Client makes invocation to EJBHome Class via the EJBHome Interfaceq Client calls one of the create() methods on the EJBHome Class. The EJBHome class can have multiple create() signatures. EJB Container EJBHome Class create() Clients EJB Server
  28. 28. EJBHome Class instantiates the Bean Classq When the create() method is called in the EJBHome Class, it is responsible for instantiating the Bean class. EJB Container EJBHome Class EJB Class Clients EJB Server
  29. 29. EJBObject Interface and Classq Intercepts calls to the EJB Class to add support for: – transactions – security – threading EJB Containerq EJBObject class has the same methods as the bean and delegates to the bean for actual behaviorq EJBObject class checks security and EJBObject EJBObject sets up transaction before delegating Interface Class method call to the beanq Clients can never get a reference to a bean’s EJB Class, only the EJBObject interface EJB Server
  30. 30. Interface javax.ejb.EJBObject public interface javax.ejb.EJBObject extends java.rmi.Remote { EJBHome getEJBHome() throws RemoteException; Handle getHandle() throws RemoteException; Object getPrimaryKey() throws RemoteException; boolean isIdentical(EJBObject obj) throws RemoteException; void remove() throws RemoteException, RemoveException; } q Represents a specific bean instance q Remote objects must implement this interface q Primary key is an object that represents the primary key for a specific instance of a bean q The EJBObject Class implementation is provided by the EJB Server Provider
  31. 31. Sample EJBObject Interface public interface Customer extends EJBObject { public abstract String getId() throws RemoteException; public abstract String getName() throws RemoteException; public abstract void setName(String val) throws RemoteException; public abstract boolean getNameNull() throws RemoteException; public abstract boolean getIdNull() throws RemoteException; public abstract Enumeration getAccounts() throws RemoteException; public abstract void addToAccounts(Account relInst) throws RemoteException; public abstract void removeFromAccounts(Account relInst) throws RemoteException; }
  32. 32. After the EJBHome Class instantiates the Bean...q The EJBHome Class will instantiate the EJBObject Class, initializing it with the remote object reference to the Bean Class.q The Client will now EJB Container communicate to the EJBHome EJBObject Class. Class Passes ref The EJBObject Class of Bean will delegate the call to the Bean. EJBHome Class Client now has reference EJB Clients to the EJBObject Class. Class NOT A REFERENCE TO THE BEAN ITSELF!!!! EJB Server
  33. 33. Client communicates to the Bean class via the EJBObject Classq Client never has a direct reference to the Bean.q The EJBObject Interface is the EJB Container interface for the Bean, so the EJBObject Class “delegates” the EJBHome calls to the Bean. Classq The EJBObject Class implementation will be generated using vendor tools. EJBHome Class EJB Class Clients EJB Server
  34. 34. EJB Classq A bean has a single Java class at its core – This class is written by a developer if it’s a session bean – This class is sometimes generated by a tool if it’s an entity beanq Implements application-specific business logicq Implements one of the following contracts: – javax.ejb.EntityBean – javax.ejb.SessionBeanq These contracts provide for consistent behavior when activating beans, passivating beans, reading data, writing dataq Every container can expect these methods in every bean
  35. 35. Deployment Descriptorq Allows you to declare transaction and security attributes, NO PROGRAMMING REQUIRED!!!q An EJB Deployment Descriptor describes the classes, interfaces and declarative behavior of an EJBq Deployment Descriptor format is serialized objects: – javax.ejb.deployment.ControlDescriptor – javax.ejb.deployment.DeploymentDescriptor – javax.ejb.deployment.EntityDescriptor – EJB Container javax.ejb.deployment.SessionDescriptorq The deployment descriptor is generated by server tools The deployment descriptor Deploymentq Descriptor classes are defined in the EJB Server EJB specification
  36. 36. Let’s look at the value of the Deployment Descriptorq Step #1 - Write your Bean implementation.q Step #2 - Compile this Java source into Java bytecodeq Step #3 - Developer is responsible for creating a serialized deployment descriptor for the bean. Most likely using a tool from the vendor. EJB tools will use Reflection API on the compiled EJB Bean to determine: – name of Bean class – methods – parameters – return valuesq Step #4 - The EJB Tool will use the above information to generate a Deployment Descriptor file and an editor with which to set transaction and security attributes.
  37. 37. Sample Contents of a Deployment Descriptor PS(TicketDemo,Concert,deployment_descriptor) Entity{ VersionNumber { 1.0 } BeanHomeName { ConcertHome } ControlDescriptor { IsolationLevel { TRANSACTION_READ_COMMITTED } Method Level MethodSecurity Attribute { int getId() throws java.rmi.RemoteException } RunAsMode { Method Level SYSTEM_IDENTITY }Transaction Attribute TransactionAttribute { TX_SUPPORTS }
  38. 38. Enterprise JavaBean Packagingq Enterprise JavaBeans are comprised of many Java filesq These files are put in a JAR file – A JAR file is a ZIP file with a MANIFEST that describes the contents of the file – A MANIFEST is a simple text file q Name: bank/AccountDeployment.ser Enterprise-Bean: Trueq A JAR file can contain more than one Enterprise JavaBean EJB Container Manifest EJB Server
  39. 39. Bean Development Processq Implement the EJB Classq Specify the remote interface EJB Containerq Specify the home interface Specify security and EJBHome EJBHome Interfaceq Class transactional characteristics using vendor tools (DeploymentDescriptor) EJB Class Use vendor tools to EJBObject EJBObjectq Interface Class generate supporting code and package components in EJB-jarq Iterate... Written by Developer Deployment Manifest Generated at Development Descriptor Generated at Deployment EJB Server
  40. 40. Enterprise Beans:Session Beans & Entity Beans Session Beans vs. Entity Beans Bean-Managed Persistence Container-Managed Persistence EJB Transaction Attributes
  41. 41. Comparing Session and Entity Beans Session Beans Entity Beans q Optional for EJB 1.0 q Mandatory for EJB q Represents 1.0 underlying data q Represents a specific object or context client (clients share instance) (1 instance per client) q Long-lived q Short-lived q Persistent q Transient q Can be a class that q Can be any Java maps to persistent data class (e.g., database) q May be transactional q Always transactional q Business Logic Beans q Beans which
  42. 42. Session Beans Represents Processq A transient agent for an individual client that executes on a server (e.g., ShoppingCart)q Session beans are often a client of multiple entity beansq Implements javax.ejb.SessionBean interfaceq State management types for session EJBs – stateful - session bean may maintain state information across method calls – stateless - session bean may be used to service multiple clients – a stateless session bean can only have a single no-argument create() method in its Home interface
  43. 43. Session Beans - Stateful or Statelessq A Stateful Session Bean maintains a one-to-one relationship with a Client. It maintains a user “session”. Most common example is an e-commerce application with a “shopping cart” unique for each user. – Container will automatically “swap out” the Session bean if it is inactive. Here the container calls the ejbPassivate() method to save any private data to some physical storage. – When container receives new request, the Container will call the ejbActivate() method to restore the Session Bean.q A Stateless Session Bean can be accessed by multiple incoming clients and keeps no private data. It does not maintain a unique session with a client. – Keeps no persistent data. If it crashes, container simply starts another one and the client transparently connects. – All access to the Bean is serialized.
  44. 44. Entity Bean Represents Dataq Implements javax.ejb.EntityBean interfaceq Maps a data source to a Java class – table, view, join or stored procedure in a relational database – a set of related records in a database – legacy dataq Each instance of an entity bean is one row of dataq Each instance of an entity bean is uniquely identified by a primary keyq An Entity Bean can also have additional methods for business logic, etc.
  45. 45. Defining an Entity Beanq An Entity Bean must implement the javax.ejb.EntityBean interface. In addition, the Entity Bean must implement an ejbCreate() method for each create() method on the Home Interface.q When the Home class gets a call to create(), it calls the ejbCreate() method on the Entity Bean with the corresponding signature.q ejbStore() and ejbLoad() used to synchronize Entity Bean data with the database.q ejbActivate() and ejbPassivate() used for notification that Entity Bean state is being written to the database or restored from the database.
  46. 46. Since Entity Beans represent Data...q Each instance of an Entity Bean is uniquely identified by a primary key objectq Primary key can be saved and used later to regain access to the same EJB object identity – fooKey = fooBean.getPrimaryKey(); … fooBean = fooHome.findByPrimaryKey(fooKey);
  47. 47. Entity Bean Operations q BeanHome.create() is equivalent to an SQL INSERT – Causes a new database record to be inserted into the database: q customerBean = customerHome.create(”Jane", ”Rodgers"); q BeanHome.findSomething() is equivalent to an SQL SELECT – Creates a bean instance that represents queried data from a database – Can also return an enumeration to represent multiple rows of data q There will typically be many findSomething() methods: q customerBean = customerHome.findByName(firstName, lastName); q customerBeans = customerHome.findByZip(94023);
  48. 48. Entity Bean Operationsq BeanHome.remove() and EJBObject.remove() are equivalent to an SQL DELETE – causes the database record to be deleted from the database q customerBean = customerHome.findByName(“Jane”, “Rodgers”); customerBean.remove();q Commiting a change on a found object is equivalent to an SQL UPDATE q customerBean = customerHome.findByName(“Jane”, “Rodgers”); customerBean.setEmailAddress(“jane.rodgers@yahoo. com”);
  49. 49. EJB Persistenceq Provides Entity Beans the ability to store and retrieve their stateq Can be implemented by a bean – Bean Managed Persistenceq Can be implemented by a container – Container Managed Persistence
  50. 50. Bean Managed Persistenceq The entity bean is responsible for its persistent behaviorq EJB developer must implement database access – ejbCreate(…), ejbLoad(), ejbStore(), ejbRemove()q Not automated, developer manually creates mapping through JDBC callsq Not as reusable – Hard-code database access within classq Advanced features like connection pooling and caching are difficult to support because of reliance on hand written code
  51. 51. Container Managed Persistence q The EJB container is responsible for persistence q The container provides tools that generate code in the EJB class that maps methods in the bean to a result set – Can map to a table, view, join or stored procedure in a database – Server provides automated mapping to convert relational data to bean instances q Advanced features like connection pooling and caching are easily supported q High reuse
  52. 52. EJB Transaction Supportq EJB allows you to either DECLARE transactions or CODE THEM EXPLICITLY. – TO DECLARE: EJB allows you to declare transaction support in the Deployment Descriptor and then have the container take care of the details inside the remote class q Transaction attributes specified at the bean and method level – FOR EXPLICIT CONTROL: An EJB Container is required to implement javax.transaction.UserTransaction q Provides an interface to a transaction service q Can be used by EJB clients and enterprise beans that are declared to manage their own transactions (TX_BEAN_MANAGED) – EJB specification does not support nested transactions
  53. 53. EJB Transaction Attributes q TX_NOT_SUPPORTED – Cannot execute within a transaction – Suspends any existing transaction while method is called q TX_SUPPORTS – Executes with or without a transaction – Doesn’t suspend existing transaction q TX_REQUIRED – Executes within a transaction – If no transaction exists, starts a new one and commits it when method completes q TX_REQUIRES_NEW – Always starts a new transaction and commits it when method completes – Suspends existing transaction q TX_BEAN_MANAGED – The bean manages its own transaction control – Suspends existing transaction q TX_MANDATORY – Must execute within a transaction – If no transaction exists, throws the TransactionRequiredException

×