EJB Interview Questions



1) What are Enterprise Java Beans?
Enterprise Java Beans (EJB) is a specification which defines a component architecture for developing distributed systems. Applications written using the Enterprise JavaBeans architecture are resusable,scalable, transactional, and secure. Enterprise Java Bean's allow the developer to only focus on implementing the business logic of the application.

2) How is a enterprise bean different from a java bean?
Both the enterprise bean and the java bean are designed to be highly reusable. But other than being reusable there is no similarity between them. Java bean is mostly a simple client-side component whereas enterprise bean is a complex server side component.

3) How many types of Enterprise beans are there and what are they?
There are 3 types EJB's and they are:
1. Entity Bean's
2. Session Bean's
3. Message Driven Bean's(MDB's)

4) How many types of Entity beans are there and what are they?
There are 2 types Entity bean's and they are:
1. Container Managed Persistence(CMP) Entity Bean's
2. Bean Managed Persistence(BMP) Entity Bean's

5) How many types of Session beans are there and what are they?
There are 2 types Session bean's and they are:
1. Statefull Session Bean's
2. Stateless Session Bean's

6) How many types of MDB's are there and what are they?
There are no different kinds of Message driven beans.

7) How many java files should a developer code to develop a session bean?
3 java files has to be provided by the developer. They are:
1) an Home Interface
2) a Remote Interface
3) And a Session Bean implementation class.

8) Explain the role of Home Interface.
Home interface contains factory methods for locating, creating and removing instances of EJB's.

9) Explain the role of Remote Interface.
Remote interface defines the business methods callable by a client. All methods defined in the remote interface must throw RemoteException.

10) What is the need for a separate Home interface and Remote Interface. Can't they be defined in one interface?
EJB doesn't allow the client to directly communicate with an enterprise bean. The client has to use home and remote interfaces for any communication with the bean.
The Home Interface is for communicating with the container for bean's life cycle operations like creating, locating,removing one or more beans. While the remote interface is used for remotely accessing the business methods.

11) What are callback methods?
Callback methods are bean's methods, which are called by the container. These are called to notify the bean, of it's life cycle events.

12) How will you make a session bean as stateful or stateless?
We have to specify the it in the deployment descriptor(ejb-jar.xml) using tag.

13) What is meant by Activation?
The process of transferring an enterprise bean from secondary storage to memory.

14) What is meant by Passivation?
The process of transferring an enterprise bean from memory to secondary storage.

15) What is a re-entrant Entity Bean?
An re-entrant Entity Bean is one that can handle multiple simultaneous, interleaved, or nested invocations which will not interfere with each other.

16) Why are ejbActivate() and ejbPassivate() included for stateless session bean even though they are never required as it is a nonconversational bean?
To have a consistent interface, so that there is no different interface that you need to implement for Stateful Session Bean and Stateless Session Bean. Both Stateless and Stateful Session Bean implement javax.ejb.SessionBean and this would not be possible if stateless session bean is to remove ejbActivate and ejbPassivate from the interface.

17) What is an EJBContext?
EJBContext is an object that allows an enterprise bean to invoke services provided by the container and to obtain the information about the caller of a client-invoked method.

18) Explain the role of EJB Container?
EJB Container implements the EJB component contract of the J2EE architecture. It provides a runtime environment for enterprise beans that includes security, concurrency, life cycle management, transactions, deployment, naming, and other services. An EJB Container is provided by an EJB Server.

19) What are Entity Bean's?
Entity Bean is an enterprise bean that represents persistent data maintained in a database. An entity bean can manage its own persistence or can delegate this function to its container. An entity bean is identified by a primary key. If the container in which an entity bean is hosted crashes, the entity bean, its primary key, and any remote references survive the crash.

20) What is a Primary Key?
Primary Key is an object that uniquely identifies an entity bean within a home.

20) Can we specify primitive data type be as a primary key?
Primitive data type cannot be directly used as primary key, it should be wrapped using a wrapper class.

21) What is a Deployment Descriptor?
Deployment Descriptor is a XML file provided with each module and application that describes how they should be deployed. The deployment descriptor directs a deployment tool to deploy a module or application with specific container options and describes specific configuration requirements that a deployer must resolve.

22) What are the new features that were introduced in EJB version 2.0 specification?
1. New CMP Model. It is based on a new contract called the abstract persistence schema, that will allow to the container to handle the persistence automatically at runtime.
2. EJB Query Language. It is a sql-based language that will allow the new persistence schema to implement and execute finder methods.
3. Message Driven Beans. It is a new bean type, that is introduced to handle asynchronous messaging.
4. Local interfaces. Enabales beans in the same EJB Container to communicate directly.
5. ejbHome methods. Entity beans can declare ejbHome methods that perform operations related to the EJB component but that are not specific to a bean instance.

23) What are the difference's between a Local Interface and a Remote Interface?
Local Interfaces are new mechanism introduced in EJB 2.0 specification which enables components in the same container to bypass RMI and call each other's methods directly. In general, direct local method calls are faster than remote method calls. The downside is a loss of flexibility: because bean and client must run in the same container, the location of the bean is not transparent to the client (as it is with remote interfaces). remote interfaces pass parameters by value, while local interfaces pass them by reference.

24) Can a bean be defined both as a Local and a Remote?
Yes.

25) What are ejbHome methods or Home Business Methods?
EJB 2.0 allows entity beans to declare ejbHome methods in the home interface. These methods perform operations that are not specific to a particular bean instance.

26) What is a transaction?
A transaction is a sequence of operations that must all complete successfully, or leave system in the state it had been before the transaction started.

27) What do mean by ACID properties of a transaction?
ACID is the acronym for the four properties guaranteed by transactions: atomicity, consistency, isolation, and durability.

28) Where will you mention whether the transaction is container managed or bean managed?
Transaction management is specified in the deployment descriptor(ejb-jar.xml) using tag.

29) What are container managed transactions?
In an enterprise bean with container-managed transactions, the EJB container sets the boundaries of the transactions. You can use container-managed transactions with any type of enterprise bean: session, entity, or message-driven. Container-managed transactions simplify development because the enterprise bean code does not explicitly mark the transaction's boundaries. The code does not include statements that begin and end the transaction.

30) What methods are restricted being called inside a method decalred as container managed?
We should not invoke any method that might interfere with the transaction boundaries set by the container. The list of restricted methods are as follows:
1) The commit, setAutoCommit, and rollback methods of java.sql.Connection
2) The getUserTransaction method of javax.ejb.EJBContext
3) Any method of javax.transaction.UserTransaction

31) What are bean managed transactions?
For bean-managed transactions, the bean specifies transaction demarcations using methods in the javax.transaction.UserTransaction interface. Bean-managed transactions include any stateful or stateless session beans with a transaction-type set to Bean. Entity beans cannot use bean-managed transactions.

For stateless session beans, the entering and exiting transaction contexts must match. For stateful session beans, the entering and exiting transaction contexts may or may not match. If they do not match, EJB container maintains associations between the bean and the nonterminated transaction.

Session beans with bean-managed transactions cannot use the setRollbackOnly and getRollbackOnly methods of the javax.ejb.EJBContext interface.

32) What is the difference between container managed and bean managed transaction?
In container-managed transaction, the transaction boundaries are defined by the container while in bean managed transaction, the transaction boundaries are defined by the bean. Entity Beans transactions are always container managed.

32) Why entity bean's transaction can't be managed by the bean?
Entity bean's represent the data and responsible for the integrity of the data. Entity bean's doesn't represent business operations to manage transactions. So there is no requirement for an entity bean managing it's transaction.

33) How many types of transaction attributes are available in EJB and what are they?
There 6 types of Transaction Atributes defined in EJB. They are as follows:
1. NotSupported : If the method is called within a transaction, this transaction is suspended during the time of the method execution.
2. Required : If the method is called within a transaction, the method is executed in the scope of this transaction; otherwise, a new transaction is started for the execution of the method and committed before the method result is sent to the caller.
3. RequiresNew : The method will always be executed within the scope of a new transaction. The new transaction is started for the execution of the method, and committed before the method result is sent to the caller. If the method is called within a transaction, this transaction is suspended before the new one is started and resumed when the new transaction has completed.
4. Mandatory: The method should always be called within the scope of a transaction, else the container will throw the TransactionRequired exception.
5. Supports : The method is invoked within the caller transaction scope; if the caller does not have an associated transaction, the method is invoked without a transaction scope.
6. Never : The client is required to call the bean without any transaction context; if it is not the case, a java.rmi.RemoteException is thrown by the container.

34) How many types of Isolation Level's are available in EJB and what are they?


35) Are we allowed to change the transaction isolation property in middle of a transaction?
No. You cannot change the transaction isolation level in the middle of transaction.

36) Are enterprise beans allowed to use Thread.sleep()?
Enterprise beans are restricted from invoking multithreading thread functionality.

37) Can a bean be attached to more than one JNDI name?
Yes. A same bean can be deployed multiple times in the same server with different JNDI names.

38) Can a client program directly access an Enterprise bean?
No. EJB Clients never access an EJB directly. The container insulates the beans from direct access from client applications. Every time a bean is requested, created, or deleted, the container manages the whole process.

39) When is an application said to be distributed?
An application is distributed when its components are running in separate runtime environments(JVM's), usually on different platforms connected via a network.
Distributed applications are usually of 3 types. They are :
1. two tier (client and a server)
2.three tier (client and a middleware and a server)
3. multitier (client and multiple middleware and multiple servers).

40) What is an EAR file?
EAR is Enterprise Archive file. A archive file that contains a J2EE application.

41) What do mean by business method?
A method of an enterprise bean that implements the business logic or rules of an application.

42) What is a finder method?
A method defined in the home interface and invoked by a client to locate an entity bean.