EJB interview questions and answers
1). What are the
Differences between EJB 3.0 and EJB 2.1?
Differences are:
1) EJB 3.0 allows developers to program EJB components as ordinary Java objects with ordinary Java business interfaces rather than as heavy weight components like EJB 2 (home, remote).
2) In EJB 3.0 you can use annotation or deployment descriptors but in EJB 2 you have to use deployment descriptors.
3) EJB 3 introduced persistence API for database access. In EJB 2 you can use Entity bean.
4) EJB 3.0 is much faster the EJB2
2). What are the key features of the
EJB technology?
1. EJB components are server-side components written entirely in
the Java programming
language
2. EJB components contain business logic only - no system-level programming & services, such as transactions, security, life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server.
3. EJB architecture is inherently transactional, distributed, portable multi-tier, scalable and secure.
4. EJB components are fully portable across any EJB server and any OS.
5. EJB architecture is wire-protocol neutral–any protocol can be utilized like IIOP,JRMP, HTTP, DCOM,etc.
2. EJB components contain business logic only - no system-level programming & services, such as transactions, security, life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server.
3. EJB architecture is inherently transactional, distributed, portable multi-tier, scalable and secure.
4. EJB components are fully portable across any EJB server and any OS.
5. EJB architecture is wire-protocol neutral–any protocol can be utilized like IIOP,JRMP, HTTP, DCOM,etc.
3). What is the
difference between EJB and RMI?
Both of them are java solution for distributed computing.
RMI offers remote access to an object running in another JVM and no other services.
But EJB offers far more services than RMI apart from remote method calling. EJB leverages this remote-object feature of RMI and ORB (RMI-IIOP) which can be called by any COBRA client, but also provides other services such as persistence, transaction management, security, resource management, object pooling and messaging.
RMI offers remote access to an object running in another JVM and no other services.
But EJB offers far more services than RMI apart from remote method calling. EJB leverages this remote-object feature of RMI and ORB (RMI-IIOP) which can be called by any COBRA client, but also provides other services such as persistence, transaction management, security, resource management, object pooling and messaging.
4).What are the ways for
a client application to get an EJB object?
1) The client has the JNDI name of the EJB object; this name is
used to get the EJB object.
2) The client has the JNDI name of the Home object, this is a more usual case; this name is used to get the Home object, then a finder method is invoked on this Home to obtain one or several entity bean objects. The client may also invoke a "create" method on the Home object to create a new EJB object (session or entity).
3) The client has got a handle on an EJB object. A handle is an object that identifies an EJB object; it may be serialized, stored, and used later by a client to obtain a reference to the EJB Object, using the getEJBObject method().
4) The client has got a reference to an EJB object, and some methods defined on the remote interface of this Enterprise Bean return EJB objects.
2) The client has the JNDI name of the Home object, this is a more usual case; this name is used to get the Home object, then a finder method is invoked on this Home to obtain one or several entity bean objects. The client may also invoke a "create" method on the Home object to create a new EJB object (session or entity).
3) The client has got a handle on an EJB object. A handle is an object that identifies an EJB object; it may be serialized, stored, and used later by a client to obtain a reference to the EJB Object, using the getEJBObject method().
4) The client has got a reference to an EJB object, and some methods defined on the remote interface of this Enterprise Bean return EJB objects.
5). What are the
different kinds of enterprise beans?
Stateless session bean- An instance of these non-persistent EJBs
provides a service without storing an interaction or conversation state between
methods. Any instance can be used for any client.
Stateful session bean- An instance of these non-persistent EJBs maintains state across methods and transactions. Each instance is associated with a particular client.
Entity bean- An instance of these persistent EJBs represents an object view of the data, usually rows in a database. They have a primary key as a unique identifier. Entity bean persistence can be either container-managed or bean-managed.
Message-driven bean- An instance of these EJBs is integrated with the Java Message Service (JMS) to provide the ability for message-driven beans to act as a standard JMS message consumer and perform asynchronous processing between the server and the JMS message producer.
Stateful session bean- An instance of these non-persistent EJBs maintains state across methods and transactions. Each instance is associated with a particular client.
Entity bean- An instance of these persistent EJBs represents an object view of the data, usually rows in a database. They have a primary key as a unique identifier. Entity bean persistence can be either container-managed or bean-managed.
Message-driven bean- An instance of these EJBs is integrated with the Java Message Service (JMS) to provide the ability for message-driven beans to act as a standard JMS message consumer and perform asynchronous processing between the server and the JMS message producer.
6). What is Entity Bean?
The entity bean is used to represent data in the database. It
provides an object-oriented interface to data that would normally be accessed
by the JDBC or some other back-end API. More than that, entity beans provide a
component model that allows bean developers to focus their attention on the
business logic of the bean, while the
container takes care of managing
persistence,transactions, and access control.
There are two basic kinds of entity beans: container-managed ersistence (CMP) andbean-managed persistence (BMP).
Container-managed persistence beans are the simplest for the bean developer to create and the most difficult for the EJB server to support. This is because all the logic for synchronizing the bean's state with the database is handled automatically by the container. This means that the bean developer doesn't need to write any data access logic, while the EJB server is
supposed to take care of all the persistence needs automatically. With CMP, the container manages the persistence of the entity bean. Vendor tools are used to map the entity fields to the database and absolutely no database access code is written in the bean class.
The bean-managed persistence (BMP) enterprise bean manages synchronizing its state with the database as directed by the container. The bean uses a database API to read and write its fields to the database, but the container tells it when to do each synchronization operation and manages the transactions for the bean automatically. Bean-managed persistence gives the bean developer the flexibility to perform persistence operations that are too complicated for the container or to use a data source that is not supported by the container.
There are two basic kinds of entity beans: container-managed ersistence (CMP) andbean-managed persistence (BMP).
Container-managed persistence beans are the simplest for the bean developer to create and the most difficult for the EJB server to support. This is because all the logic for synchronizing the bean's state with the database is handled automatically by the container. This means that the bean developer doesn't need to write any data access logic, while the EJB server is
supposed to take care of all the persistence needs automatically. With CMP, the container manages the persistence of the entity bean. Vendor tools are used to map the entity fields to the database and absolutely no database access code is written in the bean class.
The bean-managed persistence (BMP) enterprise bean manages synchronizing its state with the database as directed by the container. The bean uses a database API to read and write its fields to the database, but the container tells it when to do each synchronization operation and manages the transactions for the bean automatically. Bean-managed persistence gives the bean developer the flexibility to perform persistence operations that are too complicated for the container or to use a data source that is not supported by the container.
7). Why does EJB needs
two interfaces(Home and Remote Interface)?
There is a pure division of roles between the two .
Home Interface is the way to communicate with the container which is responsible for creating , locating and removing beans and Remote Interface is the link to the bean that allows access to all methods and members
Home Interface is the way to communicate with the container which is responsible for creating , locating and removing beans and Remote Interface is the link to the bean that allows access to all methods and members
8).What is an EJB
Context?
EJBContext is an interface that is implemented by the container,
and it is also a part of the bean-container contract. Entity beans use a
subclass of EJBContext called EntityContext. Session
beans use a subclass called SessionContext. These EJBContext objects
provide the bean class with information about its container, the client using
the bean and the bean itself. They also provide other functions. See the API
docs and the spec for more details
9). Does the container create a separate instance of the generated EJBHome and EJBObject classes?
The EJB container maintains an instance pool. The container uses
these instances for the EJB Home reference irrespective of the client request.
While referring the EJB Object classes the container creates a separate instance
for each client request. The instance pool maintenance is up to the
implementation of the container. If the container provides one, it is available
otherwise it is not mandatory for the provider to implement it. Having said that,
yes most of the container providers implement the pooling functionality to
increase the performance of the application server. The way it is implemented is again up to the
implementer.
10). What's difference
between httpsession and EJB session bean ?
A session in a Servlet, is maintained by the Servlet Container
through the HttpSession object, that is acquired through the request object.
You cannot really instantiate a new HttpSession object, and it doesn't contains
any business logic, but is more of a place where tostoreobjects.
A session in EJB is maintained using the SessionBeans. You design beans that can contain business logic, and that can be used by the clients. You have two different session beans: Stateful and Stateless. The first one is somehow connected with a single client. It maintains the state for that client, can be used only by that client and when the client "dies" then the session bean is "lost".
A Stateless Session Bean doesn't maintain any state and there is no guarantee that the same client will use the same stateless bean, even for two calls one after the other. The lifecycle of a Stateless Session EJB is slightly different from the one of a Stateful Session EJB. Is EJB Container's responsibility to take care of knowing exactly how to track each session and redirect the request from a client to the correct instance of a Session Bean. The way this is done is vendor dependant, and is part of the contract.
A session in EJB is maintained using the SessionBeans. You design beans that can contain business logic, and that can be used by the clients. You have two different session beans: Stateful and Stateless. The first one is somehow connected with a single client. It maintains the state for that client, can be used only by that client and when the client "dies" then the session bean is "lost".
A Stateless Session Bean doesn't maintain any state and there is no guarantee that the same client will use the same stateless bean, even for two calls one after the other. The lifecycle of a Stateless Session EJB is slightly different from the one of a Stateful Session EJB. Is EJB Container's responsibility to take care of knowing exactly how to track each session and redirect the request from a client to the correct instance of a Session Bean. The way this is done is vendor dependant, and is part of the contract.
11). What are the key benefits of the EJB technology?
1. Rapid application development
2. Broad industry adoption
3. Application portability
4. Protection of IT investment
2. Broad industry adoption
3. Application portability
4. Protection of IT investment
12). Why
do we have a remove method in both EJBHome and EJBObject?
With the EJBHome version of the remove, you are able to
delete an entity bean without first instantiating it (you can provide a Primary
Key object as a parameter to the remove method). The home version only works
for entity beans. On the other hand, the Remote interface version works on an
entity bean that you have already instantiated. In addition, the remote version
also works on session beans (stateless and stateful) to inform the container of
your loss of interest in this bean.
13).
What are the services provided by container?
Container services are totally depends upon the
"vendor implementation". But more or less most of the vendors suppots
the basic services like,
LifeCycle Management - It is Automatic...
Resource Management-Creating and destroying the objects based the current load of requests for better usage of memory.
Session Management - it is used by Developer coded callback methods...
Transaction Management - it is used by configuring deployment
descriptor (DD) ...
Security management - it is used by configuring deployment descriptor (DD) ...
The other services, if any will be in advanced versions, and depends on Vendor specific.
LifeCycle Management - It is Automatic...
Resource Management-Creating and destroying the objects based the current load of requests for better usage of memory.
Session Management - it is used by Developer coded callback methods...
Transaction Management - it is used by configuring deployment
descriptor (DD) ...
Security management - it is used by configuring deployment descriptor (DD) ...
The other services, if any will be in advanced versions, and depends on Vendor specific.
14). Is it
possible to share an HttpSession between a JSP and EJB? What happens when I
change a value in the HttpSession from inside an EJB?
You
can pass the HttpSession as parameter to an EJB method, only if all
objects in session are serializable. This has to be consider as
?passed-by-value?, that means that its read-only in the EJB. If anything is
altered from inside the EJB, it won’t be reflected back to the HttpSession of
the Servlet Container.The ?pass-by-reference? can be used between EJBs Remote
Interfaces, as they are remote references. While it IS possible to pass an
HttpSession as a parameter to an EJB object, it is considered to be ?bad
practice (1)? in terms of object oriented design. This is because you are
creating an unnecessary coupling between back-end objects (ejbs) and front-end
objects (HttpSession). Create a higher-level of abstraction for your ejb’s api.
Rather than passing the whole, fat, HttpSession (which carries with it a bunch
of http semantics), create a class that acts as a value object (or structure)
that holds all the data you need to pass back and forth between
front-end/back-end
15). What is
the difference between a Coarse Grained? Entity Bean and a Fine Grained? Entity
Bean?
A
?fine grained? entity bean is pretty much directly mapped to one relational
table, in third normal form. A ?coarse grained? entity bean is larger and more
complex, either because its attributes include values or lists from other
tables, or because it ?owns? one or more sets of dependent objects. Note that
the coarse grained bean might be mapped to a single table or flat file, but
that single table is going to be pretty ugly, with data copied from other
tables, repeated field groups, columns that are dependent on non-key fields,
etc. Fine grained entities are generally considered a liability in large systems
because they will tend to increase the load on several of the EJB server?s
subsystems (there will be more objects exported through the distribution layer,
more objects participating in transactions, more skeletons in memory, more EJB
Objects in memory, etc.)
16).
Does Stateful Session bean support instance pooling?
Stateful
Session Bean conceptually doesn't have instance pooling.
What is the difference between JavaBean and EJB?
A Java Bean is a software component written in the Java programming language that conforms to the JavaBeans component specification. The JavaBeans APIs became part of the "core" Java APIs as of the 1.1 release of the JDK.
The JavaBeans specification defines a Java-based software component model that adds a number of features to the Java programming language. Some of these features include:
* introspection
* customization
* events
* properties
* persistence
Enterprise JavaBeans (EJBs) are Java-based software components that are built to comply with Java's EJB specification and run inside of an EJB container supplied by a J2EE provider. An EJB container provides distributed application functionality such as transaction support,
What is the difference between JavaBean and EJB?
A Java Bean is a software component written in the Java programming language that conforms to the JavaBeans component specification. The JavaBeans APIs became part of the "core" Java APIs as of the 1.1 release of the JDK.
The JavaBeans specification defines a Java-based software component model that adds a number of features to the Java programming language. Some of these features include:
* introspection
* customization
* events
* properties
* persistence
Enterprise JavaBeans (EJBs) are Java-based software components that are built to comply with Java's EJB specification and run inside of an EJB container supplied by a J2EE provider. An EJB container provides distributed application functionality such as transaction support,
17). What
are the Interfaces need to create to implement Session Bean with Exmaple?
Session
bean class (CartBean)
Home interface (CartHome)
Remote interface (Cart)
Session bean class (CartBean) :
public class CartBean implements SessionBean {
String customerName;
String customerId;
Vector contents;
public void ejbCreate(String person)
throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
customerId = "0";
contents = new Vector();
}
public void ejbCreate(String person, String id)
throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new CreateException("Invalid id: "+ id);
}
contents = new Vector();
}
public void addBook(String title) {
contents.addElement(title);
}
public void removeBook(String title) throws BookException {
boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title + "not in cart.");
}
}
public Vector getContents() {
return contents;
}
public CartBean() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
Home Interface:
public interface CartHome extends EJBHome {
Cart create(String person) throws
RemoteException, CreateException;
Cart create(String person, String id) throws
RemoteException, CreateException;
}
The signatures of the ejbCreate and create methods are similar, but differ in important ways. The rules for defining the signatures of the create methods of a home interface follow.
The number and types of arguments in a create method must match those of its corresponding ejbCreate method.
The arguments and return type of the create method must be valid RMI types.
A create method returns the remote interface type of the enterprise bean. (But an ejbCreate method returns void.)
The throws clause of the create method must include the java.rmi.RemoteException and the javax.ejb.CreateException
Remote Interface :
public interface Cart extends EJBObject {
public void addBook(String title) throws RemoteException;
public void removeBook(String title) throws
BookException, RemoteException;
public Vector getContents() throws RemoteException;
}
The method definitions in a remote interface must follow these rules:
Each method in the remote interface must match a method implemented in the enterprise bean class.
The signatures of the methods in the remote interface must be identical to the signatures of the corresponding methods in the enterprise bean class.
The arguments and return values must be valid RMI types.
The throws clause must include the java.rmi.RemoteEx
Remote interface (Cart)
Session bean class (CartBean) :
public class CartBean implements SessionBean {
String customerName;
String customerId;
Vector contents;
public void ejbCreate(String person)
throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
customerId = "0";
contents = new Vector();
}
public void ejbCreate(String person, String id)
throws CreateException {
if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}
IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new CreateException("Invalid id: "+ id);
}
contents = new Vector();
}
public void addBook(String title) {
contents.addElement(title);
}
public void removeBook(String title) throws BookException {
boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title + "not in cart.");
}
}
public Vector getContents() {
return contents;
}
public CartBean() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
Home Interface:
public interface CartHome extends EJBHome {
Cart create(String person) throws
RemoteException, CreateException;
Cart create(String person, String id) throws
RemoteException, CreateException;
}
The signatures of the ejbCreate and create methods are similar, but differ in important ways. The rules for defining the signatures of the create methods of a home interface follow.
The number and types of arguments in a create method must match those of its corresponding ejbCreate method.
The arguments and return type of the create method must be valid RMI types.
A create method returns the remote interface type of the enterprise bean. (But an ejbCreate method returns void.)
The throws clause of the create method must include the java.rmi.RemoteException and the javax.ejb.CreateException
Remote Interface :
public interface Cart extends EJBObject {
public void addBook(String title) throws RemoteException;
public void removeBook(String title) throws
BookException, RemoteException;
public Vector getContents() throws RemoteException;
}
The method definitions in a remote interface must follow these rules:
Each method in the remote interface must match a method implemented in the enterprise bean class.
The signatures of the methods in the remote interface must be identical to the signatures of the corresponding methods in the enterprise bean class.
The arguments and return values must be valid RMI types.
The throws clause must include the java.rmi.RemoteEx
18).
How many EJB Objects are created for a Bean?
For
a Session bean - one EJB object for one bean
instance. For entity bean it depends, if 2 users are accessing one row at time
then one EJB object is used for both the beans other wise for each bean one EJB
object.
19).
What are the parameters must follow for Session Bean ?
It
implements the SessionBean interface.
The class is defined as public.
The class cannot be defined as abstract or final.
It implements one or more ejbCreate methods.
It implements the business methods.
It contains a public constructor with no parameters.
It must not define the finalize method.
The class is defined as public.
The class cannot be defined as abstract or final.
It implements one or more ejbCreate methods.
It implements the business methods.
It contains a public constructor with no parameters.
It must not define the finalize method.
20).When
you will chose Stateful session bean and Stateless session bean?
Stateful
session beans are used when there is converstional state and when there is a
need of temporary storage
Stateless session bean are used when there is no conversational state and when session bean has to be used only for database access
Stateless session bean are used when there is no conversational state and when session bean has to be used only for database access
0 comments:
Post a Comment