Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Read Java Certification SCBCD Study Guide - 7. Session Bean Component Contract.

JavaFAQ Home » Java Certification Books and Tests Go to all tips in Java Certification Books and Tests


Bookmark and Share

Match the correct description about purpose and function to which session bean type they apply: stateless, stateful, or both.

The conversational state of a STATEFUL session object is defined as the session bean instance’s field values, plus the transitive closure of the objects from the instance’s fields reached by following Java object references.

STATELESS session beans are session beans whose instances have no conversational state. This means that all bean instances are equivalent when they are not involved in servicing a client-invoked method.

Because all instances of a STATELESS session bean are equivalent, the container can choose to delegate a client-invoked method to any available instance. This means, for example, that the Container may delegate the requests from the same client within the same transaction to different instances, and that the Container may interleave requests from multiple transactions to the same instance.

There is no fixed mapping between clients and STATELESS instances. The container simply delegates a client’s work to any available instance that is method-ready.

There is "method ready" STATE for STATEFUL session beans. Because they have relationship: one client - one bean.

There is "method ready" POOL for STATELESS session beans. Because they have relationship: one client - many beans.

Given a list of responsibilities related to session beans, identify those which are the responsibility of the session bean provider and those which are the responsibility of the EJB container provider.

Bean Provider's responsibility

The session bean provider is responsible for providing the following class files:
  • Session bean class.
  • Session bean’s remote interface and remote home interface, if the session bean provides a remote client view.
  • Session bean’s local interface and local home interface, if the session bean provides a local client view.

Container Provider's responsibility

The container provider is responsible for providing the deployment tools and for managing the session bean instances at runtime.

The deployment tools provided by the container are responsible for the generation of additional classes when the session bean is deployed. The tools obtain the information that they need for generation of the additional classes by introspecting the classes and interfaces provided by the enterprise bean provider and by examining the session bean’s deployment descriptor. The deployment tools must generate the following classes:
  • A class that implements the session bean’s remote home interface (session EJBHome class).
  • A class that implements the session bean’s remote interface (session EJBObject class).
  • A class that implements the session bean’s local home interface (session EJBLocalHome class).
  • A class that implements the session bean’s local interface (session EJBLocalObject class).

The deployment tools may also generate a class that mixes some container-specific code with the session bean class. This code may, for example, help the container to manage the bean instances at runtime. The tools can use subclassing, delegation, and code generation.

  • The session EJBHome class, which is generated by the deployment tools, implements the session bean’s remote home interface. This class implements the methods of the javax.ejb.EJBHome interface and the create<METHOD> methods specific to the session bean. The implementation of each create<METHOD>(...) method invokes a matching ejbCreate<METHOD>(...) method.
  • The session EJBObject class, which is generated by the deployment tools, implements the session bean’s remote interface. It implements the methods of the javax.ejb.EJBObject interface and the business methods specific to the session bean. The implementation of each business method must activate the instance (if the instance is in the passive state) and invoke the matching business method on the instance.
  • The session EJBLocalHome class, which is generated by the deployment tools, implements the session bean’s local home interface. This class implements the methods of the javax.ejb.EJBLocalHome interface and the create<METHOD> methods specific to the session bean. The implementation of each create<METHOD>(...) method invokes a matching ejbCreate<METHOD>(...) method.
  • The session EJBLocalObject class, which is generated by the deployment tools, implements the session bean’s local interface. It implements the methods of the javax.ejb.EJBLocalObject interface and the business methods specific to the session bean. The implementation of each business method must activate the instance (if the instance is in the passive state) and invoke the matching business method on the instance.
  • The deployment tools are responsible for implementing the handle classes for the session bean’s REMOTE HOME and REMOTE interfaces.
  • The deployment tools are responsible for implementing the class that provides meta-data to the remote client view contract. The class must be a valid RMI Value class and must implement the javax.ejb.EJBMetaData interface.
  • The container must ensure that ONLY ONE thread can be executing an instance at any time. If a client request arrives for an instance while the instance is executing another request, the container may throw the java.rmi.RemoteException to the second request if the client is a remote client, or the javax.ejb.EJBException if the client is a local client.
  • The container MUST follow the rules with respect to transaction scoping, security checking, and exception handling.
  • The container MUST implement the SessionContext.getEJBObject() method such that the bean instance can use the Java language cast to convert the returned value to the session bean’s remote interface type. Specifically, the bean instance does not have to use the PortableRemoteObject.narrow(...) method for the type conversion.

 

Given a list of requirements, identify those which are the requirements for a session bean class, a remote component interface, a remote home interface, create methods, business methods, a local component interface, and a local home interface.

The following are the requirements for session BEAN CLASS:
  • The class MUST implement, directly or indirectly, the javax.ejb.SessionBean interface.
  • The class MUST be defined as public, MUST NOT be final, and MUST NOT be abstract (NOTE, CMP ENTITY bean class MUST be abstract).
  • The class MUST have a public constructor that takes NO parameters. The Container uses this constructor to create instances of the session bean class.
  • The class MUST NOT define the finalize() method.
  • The class may, but is not required to, implement the session bean’s component interface (NOTE: AVOID passing of this).
  • The class MUST implement the business methods and the ejbCreate methods.
  • If the class is a STATEFUL session bean, it may optionally implement the javax.ejb.SessionSynchronization interface.
  • The session bean class may have superclasses and/or superinterfaces. If the session bean has superclasses, then the business methods, the ejbCreate<METHOD> methods, the methods of the SessionBean interface, and the methods of the optional SessionSynchronization interface may be defined in the session bean class, or in any of its superclasses.
  • The session bean class is allowed to implement other methods (for example helper methods invoked internally by the business methods) in addition to the methods required by the EJB specification.
The session BEAN CLASS may define zero or more business methods whose signatures must follow these rules:
  • The method names can be arbitrary, but they MUST NOT start with “ejb” to avoid conflicts with the callback methods used by the EJB architecture.
  • The business method MUST be declared as public.
  • The method MUST NOT be declared as final or static.
  • The argument and return value types for a method MUST be legal types for RMI/IIOP if the method corresponds to a business method on the session bean’s remote interface.
  • The throws clause may define arbitrary application exceptions.
The session BEAN CLASS must define one or more ejbCreate<METHOD>(...) methods whose signatures must follow these rules:
  • The method name MUST have ejbCreate as its prefix.
  • The method MUST be declared as public.
  • The method MUST NOT be declared as final or static.
  • The return type MUST be void.
  • The method arguments MUST be legal types for RMI/IIOP if there is a create<METHOD>(...) corresponding to the ejbCreate<METHOD>(...) method on the session bean’s remote home interface.
  • The throws clause may define arbitrary application exceptions, possibly including the javax.ejb.CreateException.
The following are the requirements for the session bean’s REMOTE [component] interface:
  • The interface MUST extend the javax.ejb.EJBObject interface.
  • The methods defined in this interface MUST follow the rules for RMI/IIOP. This means that their argument and return values must be of valid types for RMI/IIOP, and their throws clauses must include the java.rmi.RemoteException.
  • The remote interface is allowed to have superinterfaces. Use of interface inheritance is subject to the RMI/IIOP rules for the definition of remote interfaces.
  • For each method defined in the remote interface, there must be a matching method in the session bean’s class. The matching method must have:
    • The same name.
    • The same number and types of arguments, and the same return type.
    • All the exceptions defined in the throws clause of the matching method of the session bean class must be defined in the throws clause of the method of the remote interface.
  • The remote interface methods must not expose local interface types, local home interface types, or the managed collection classes that are used for entity beans with container-managed persistence as arguments or results.
The following are the requirements for the session bean’s REMOTE HOME interface:
  • The interface MUST extend the javax.ejb.EJBHome interface.
  • The methods defined in this interface MUST follow the rules for RMI/IIOP. This means that their argument and return values MUST be of valid types for RMI/IIOP, and that their throws clauses MUST include the java.rmi.RemoteException.
  • The remote home interface is allowed to have superinterfaces. Use of interface inheritance is subject to the RMI/IIOP rules for the definition of remote interfaces.
  • A session bean’s remote home interface MUST define one or more create<METHOD>(...) methods. (NOTE, Entity Beans may define ZERO create(...) methods). A STATELESS session bean must define exactly ONE create() method with NO arguments.
  • Each create method MUST be named “create<METHOD>”, and it MUST match one of the ejbCreate<METHOD> methods defined in the session bean class. The matching ejbCreate<METHOD> method MUST have the same number and types of arguments. (Note that the return type is different.) The methods for a STATELESS session bean MUST be named “create” and “ejbCreate”.
  • The return type for a create<METHOD> method MUST be the session bean’s REMOTE INTERFACE type.
  • All the exceptions defined in the throws clause of an ejbCreate<METHOD> method of the session bean class must be defined in the throws clause of the matching create<METHOD> method of the remote home interface.
  • The throws clause of create<METHOD>(...) MUST include javax.ejb.CreateException.
The following are the requirements for the session bean’s LOCAL [component] interface:
  • The interface MUST extend the javax.ejb.EJBLocalObject interface.
  • The throws clause of a method defined in the LOCAL interface MUST NOT include the java.rmi.RemoteException.
  • The local interface is allowed to have superinterfaces.
  • For each method defined in the local interface, there must be a matching method in the session bean’s class. The matching method must have:
    • The same name.
    • The SAME number and types of arguments, and the SAME return type.
    • All the exceptions defined in the throws clause of the matching method of the session bean class must be defined in the throws clause of the method of the local interface.
The following are the requirements for the session bean’s LOCAL HOME interface:
  • The interface MUST extend the javax.ejb.EJBLocalHome interface.
  • The throws clause of a method in the LOCAL home interface MUST NOT include the java.rmi.RemoteException.
  • The local home interface is allowed to have superinterfaces.
  • A session bean’s local home interface MUST define one or more create<METHOD>(...) methods. A STATELESS session bean MUST define exactly ONE create() method with NO arguments.
  • Each create method MUST be named “create<METHOD>”, and it MUST match one of the ejbCreate<METHOD> methods defined in the session bean class. The matching ejbCreate<METHOD> method MUST have the same number and types of arguments. (Note that the return type is different.) The methods for a STATELESS session bean MUST be named “create” and “ejbCreate”.
  • The return type for a create<METHOD> method MUST be the session bean’s local interface type.
  • All the exceptions defined in the throws clause of an ejbCreate<METHOD> method of the session bean class MUST be defined in the throws clause of the matching create<METHOD> method of the local home interface.
  • The throws clause of create<METHOD> method MUST include javax.ejb.CreateException.
IBA JV

 Printer Friendly Page  Printer Friendly Page
 Send to a Friend  Send to a Friend

.. Bookmark and Share

Search here again if you need more info!
Custom Search



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy