Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Binu P Chacko Associate Professor Department of Computer

VIEWS: 2 PAGES: 25

									                  J2EE

                Binu P Chacko
             Associate Professor
      Department of Computer Science
      Department of Computer Science
Prajyoti Niketan College, Pudukad, THRISSUR
            Enterprise JavaBeans
            Enterprise JavaBeans
         p                       p            (
• A component of Java 2 Enterprise Edition (J2EE)  )
  architecture
• Used to write server side components
• EJB server handles system level services such as 
  threading, security, transactions, and persistence
EJB container: It is a vendor provided entity located on
EJB container: It is a vendor‐provided entity located on 
  EJB server
                  y                (     p
EJB classes: Entity JavaBean class (to represent business 
  data), Session JavaBean class (to model a business 
  process), Message‐Driven JavaBean class (to receive 
  messages from a JMS resource – Queue or Topic)
  messages from a JMS resource – Queue or Topic)
              EJB Interfaces
              EJB Interfaces
  Home interface is used by local clients
• Home interface is used by local clients
import javax.ejb.*;
import java.rmi.RemoteException;
i       j      i              i
public interface MyEJBHome extends EJBHome {
  public MyEJB create() throws CreateException, 
               p
  RemoteException; };
 Create() method returns MyEJB object which 
  is the EJB used with MyEJBHome
  is the EJB used with MyEJBHome interface
           Remote Interface
           Remote Interface
  Used by remote clients
• Used by remote clients
import java.rmi.RemoteException;
import javax.ejb. ;
import javax ejb *;
public interface MyEJB extends EJBObject {
    bli St i      M th d() th
  public String myMethod() throws 
  RemoteException;
}
 myMethod() is accessed by a remote client
       Deployment Descriptors
       Deployment Descriptors
    esc bes o J s a e a aged at u t e
• Describes how EJBs are managed at runtime
• Written in a file using XML syntax
  File is packaged in Java Archive (JAR) file
• File is packaged in Java Archive (JAR) file
Define the URL for Document Type Definition (DTD) 
              g
  and the organization that defines DTD
DTD defines the structure of XML document
               j j            //             y
<!DOCTYPE ejb‐jar PUBLIC “~//Sun Microsystems, ,
  Inc. //DTD EnterpriseJavaBeans 2.0//EN” 
  “http://java/sun/com/dtd/ejb‐jar_2_0/dtd”>
                                  Cont…
<ejb‐jar>                                     Root element of deployment descriptor
   <enterprise‐beans>                         Declaration of EJB
         Three elements contained in <enterprise‐beans> : <entity>, <session>, 
         <message‐driven>
         <entity>                                          describe the entity EJB
                                              Subelements describe the entity EJB
                  Name of the entity EJB
                  <ejb‐name>myEJB</ejb‐name>
                  class name of remote home interface
                  <home>com.jimkeogh.ejb.MyEJBHome</home>
                  class name of remote interface
                  <remote>com.jimkeogh.ejb.MyEJBRemote</remote>
                  class name of local home interface
                  <local‐home>com.jimkeogh.ejb.MyEJBHomeLocal</local‐home>
                  class name of local interface
                   l l       ji k h jb M EJBL l /l l
                  <local>com.jimkeogh.ejb.MyEJBLocal</local>
                            Cont…
                Name of EJB class
                <ejb‐class>com.jimkeogh.ejb.MyEJB</ejb‐class>
        An entity EJB manages persistence through either container‐
        managed persistence or bean‐managed persistence
                                               /
                <persistence‐type>Container</persistence‐type>
                Class name of entity EJB’s primary key
                <prim‐key‐class>java.lang.String</prim‐key‐class>
        Declare whether or not an entity EJB can be looped back 
        without throwing an exception
                <reentrant>False</reentrant>
          / i
        </entity>
   </enterprise‐beans>
</ejb‐jar>
            Environment Elements
            Environment Elements
• <env‐entry> element is used in the deployment descriptor to define 
      l    t      t i EJB’s behaviour
    values to customise EJB’ b h i
• Subelements: <description> (optional), <env‐entry‐name>,       
    <env‐entry‐type>, <env‐entry‐value> (optional)
<env‐entry>
<env entry>
    <env‐entry‐name>PassingMark</env‐entry‐name>
    <env‐entry‐type>java.lang.Integer</env‐entry‐type>
    <        t     l >80</        t
    <env‐entry‐value>80</env‐entry‐value>l >
</env‐entry>
Access an environment entry from EJB
I i i lC       ic       I i i lC     ()
InitialContext i = new InitialContext();
integer pm = (integer) ic.lookup(“java:comp/env/PassingMark”);
                 Security Elements
                 Security Elements
• <security‐role‐ref> element is used to specify EJB’s security role
• Subelements: <description> (optional), <role‐name>, <role‐link> 
   (optional)
• <role‐link> is used to map EJB’s role name to a logical role 
   contained in <security role>
   contained in <security‐role>
<security‐role‐ref>
   <description>EJB security role</description>
   <role‐name>Supervisor</role‐name>
   < l          >S     i </ l           >
</security‐role‐ref>
Verify the role name within an EJB
b l              i            i C ll I R l (“S      i ”)
boolean supervisor = context.isCallerInRole(“Supervisor”);
   if (!supervisor)
          throw new AccessDeniedException();
             Query Element
             Query Element
  <query> is used to specify a query method 
• <query> is used to specify a query method
  and a QL statement
Subelements
• <ejb‐ql> contains an SQL statement
• <query‐method> specifies the method that is 
  invoked to execute the SQL statement
• Subelements: <method‐name>, <method‐
  p
  params>
                          <query>
<query>
   <query‐method>
        <method‐name>finfbyCompany<method‐name>
        <method‐params>
                  Describe each parameter by type
                  <method‐param>java.lang.String<method‐param>
        </method‐params>
   </query‐method>
   <ejb‐ql>
        Retrieve company object from vendor table
                       p y j
        SELECT OBJECT(v) FROM vendor v WHERE c.company = ?
        ‘?’ is a placeholder for the parameter passed to the method
   </ejb‐ql>
    / j q
</query>
              Assembly Elements
              Assembly Elements
• <assembly‐descriptor> specifies method permission, logical 
  security roles, and transaction attributes
  security roles and transaction attributes
• Subelements: <method‐permission>, <security‐role>,      
  <container‐transactions>
  A role defines permissions a group of users have to call a 
• A l d fi             i i              f     h    t     ll
  method
• <method‐permission> describes security roles
• Subelements: <description> (optional), <role‐name>, 
  <method>
• <security‐role> defines security role
          y                      y
• Subelements: <description> (optional), <role‐name>
• <container‐transactions> specify transaction attributes that 
  apply to a method
  apply to a method
• Subelements: <description> (optional), <method>,      
  <trans‐attribute>
          <method permission>
          <method‐permission>
• Define security roles and map them to method 
  permissions
<method‐permission>
  <role‐name>Director</role‐name>
  <role name>Director</role name>
  Maps Director security role to all methods of myEJB
  <method>
      <ejb‐name>myEJB</ejb‐name>
      <method‐name>*</method‐name>
   /    h d
  </method>
</method‐permission>
  Anyone having Director security role can access all 
• Anyone having Director security role can access all
  methods of myEJB
            Transaction Elements
            Transaction Elements
• A transaction is to execute a unit of work that may    y
  involve multiple tasks. e.g. purchase order
• If one task fails, the transaction fails and all successfully 
        l t d t k f th t           ti        tb      ll d b k
  completed tasks of the transaction must be rolled back
• Declare a transaction using deployment descriptor
  Define the tasks of a transaction as EJB methods
• Define the tasks of a transaction as EJB methods
• Every EJB that participates in a transaction is 
                                                  p
  considered to be within the transaction scope. The 
  thread of execution of a transaction follows transaction 
  scope
                           Example
<ejb‐jar>
   <assembly‐descriptor>
         <container‐transaction>            Define the transaction
                 Components are defined in <method> and <trans‐attribute>
                 <method>
                          <ejb‐name>yourEJB</ejb‐name>
                                   <method‐name>myMethod</method‐name>
                 </method>
                 Set the transaction attribute to ‘myMethod’  of ‘yourEJB’
                 <trans‐attribute>NotSupported</trans‐attribute>
         </container‐transaction>
           /
   </assembly descriptor>
</ejb‐jar>
       EJB Transaction Attribute
       EJB Transaction Attribute
  An EJB server will manage a transaction based 
• An EJB server will manage a transaction based
  on EJB’s transaction attribute. This is referred 
  to as Container managed
  to as Container
• It is applied at EJB level or method level. All 
  methods of EJB are affected by transaction 
  methods of EJB are affected by transaction
  attribute at EJB level, while only specified 
  methods are affected at the method level
  methods are affected at the method level
   Values of Transaction Attribute
   Values of Transaction Attribute
              y
• Mandatory: The EJB must be within the transaction 
  scope of calling EJB (or client)
• Never: The EJB must not be within a transaction scope
• NotSupported: The transaction is suspended while EJB 
  executes, and then resumes
  Required: EJB must be invoked within a transaction
• Required: EJB must be invoked within a transaction
• RequiresNew: A new transaction is started when the 
  EJB is called
• Supports: EJB is included in the transaction scope
                 Session Java Bean
                 Session Java Bean
• Contains business logic used to provide a service to the client
• Terminates once the session with the client server terminates
import javax.ejb.*;
A session bean is a Java class that implements SessionBean interface
public class MyEJBBean implements SessionBean {
The SessionBean interface requires that five methods be defined in 
   session bean class
   public void ejbActive() {
         System.out.println(“Called whenever session bean is removed 
         from the object pool (memory) and is referenced by a 
         client );
         client”);       }
   Called just before the bean is available for garbage collection
   public void ejbRemove() {
         System.out.println(“This is when the session bean is removed 
         System out println(“This is when the session bean is removed
         from the object pool”); }
                               Cont…
public void ejbPassivate() {
                        (
   System.out.println(“called before the instance enters the passive state when 
   the session bean is returned to object pool”);     }
Called before any business methods are called
public void setSessionContext(SessionContext ctx) {
public void setSessionContext(SessionContext ctx) {
   System.out.println(“This is where transactions are managed and accessed”); }
Used to initialize fields of EJB instances
public void ejbCreate() {
public void ejbCreate() {
   System.out.println(“It must have parameters that match create() in Home 
   interface”); }
Here place the business logic
public String myMethod() {
   return;          }         }
• EJB container calls the methods
   Reference the session bean in deployment descriptor
• R f           h       i b        i d l      d     i
          Message Driven Bean
          Message Driven Bean
  It is designed for clients to invoke server side 
• It is designed for clients to invoke server side
  business logic using asynchronous 
  communication
• Request from clients are sent via JMS
  EJB container is responsible for creating and 
• EJB        i   i           ibl f        i     d
  removing MDB
• EJB container listens for messages in JMS
              Creating MDB
              Creating MDB
  p j          j       g          ;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.MessageListener;
import.javax.jms.Message;
public class myMDB implements MessageListener, 
  MessageDrivenBean {
  M         Di B
  An MDB must define four methods
  public void setMessageDrivenContext
  public void setMessageDrivenContext
  (MessageDrivenContext mdc) { 
                              }
      Creates context for MDB }
                     Cont…
pub c o d ejbC eate() {
public void ejbCreate() {
  Called when MDB is created       }
public void ejbRemove() {
public void ejbRemove() {
  Called by EJB container when the container 
  terminates the instance of MDB }
public void onMessage(Message clientMessage) { 
  Called each time the EJB container receives a JMS 
  message from a client      }
}
  Java Remote Method Invocation
  Java Remote Method Invocation
• Used to connect a client and a server
• A client is an application or component that requires the 
  services of an object
  A server creates an object and makes the object available 
• A server creates an object and makes the object available
  to clients
• Server side objects must implement a remote interface and 
  associated method definitions
  associated method definitions
• A client contacts the server to reference and invoke the 
  object using RMI
  Dynamic code loading: RMI handles transmission of 
• Dynamic code loading: RMI handles transmission of
  requests and provides the facility to load object’s byte code
• A client locates a remote object by either using RMI naming 
  registry or by passing a string that references the remote 
  registry or by passing a string that references the remote
  object
              Passing Objects
              Passing Objects
  Pass by reference: RMI passes objects as 
• Pass by reference: RMI passes objects as
  arguments and returns a value by reference. 
  Any change made by an invocation of a 
  Any change made by an invocation of a
  remote call affect the original remote object
  Pass by value: Object serialization is used to 
• Pass by value: Object serialization is used to
  pass a local object by value. Any changes 
  made to an object s state by the client are not 
  made to an object’s state by the client are not
  reflected in the original object
               RMI Process
               RMI Process
  Design an object: Define the business logic, 
• Design an object: Define the business logic,
  Define a remote interface, Client methods, 
  Server methods
• Compile the object using javac compiler and 
  create a stub for the object by calling rmic
• Make the object accessible to remote clients
  by loading it to a server. Also use the 
  command start rmiregistry to run RMI remote 
  object registry

								
To top