Enterprises Java Beans

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 13

Enterprises Java Beans

1) What are Enterprise Java Beans?


Enterprise Java Beans (EJB) is a specification which defines component
architecture for developing distributed systems. Applications written using the
Enterprise JavaBeans architecture are reusable, scalable, transactional, and secure.
Enterprise Java Bean's allow the developer to only focus on implementing the
business logic of the application.
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.
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.
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
1

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
<session-type> 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 <transaction-type> 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. Containermanaged 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.
Q:
What are the different kinds of enterprise beans?
A: Different kind of enterrise beans are Stateless session bean, Stateful session bean,
Entity bean, Message-driven bean...........
Q:
What is Session Bean?
A: A session bean is a non-persistent object that implements some business logic
running on the server. One way to think of a session object...........

Q:
What is Entity Bean?
A: The entity bean is used to represent data in the database. It provides an objectoriented interface to ...........
Q:
What are the methods of Entity Bean?
A: An entity bean consists of 4 groups of methods, create methods...........
Q:
What is the difference between Container-Managed Persistent (CMP)
bean and Bean-Managed Persistent(BMP) ?
A: Container-managed persistence (CMP) and bean-managed persistence (BMP).
With CMP, the container manages the persistence of the entity bean............
Q:
What are the callback methods in Entity beans?
A: Callback methods allows the container to notify the bean of events in
its life cycle. The callback methods are defined in the javax.ejb.EntityBean
interface............
Q:
What is software architecture of EJB?
A: Session and Entity EJBs consist of 4 and 5 parts respectively, a remote
interface...........
Q:
Can Entity Beans have no create() methods?
A: Yes. In some cases the data is inserted NOT using Java application,...........
Q:
What is bean managed transaction?
A: If a developer doesn't want a Container to manage transactions, it's possible to
implement all database operations manually...........
Q:
What are transaction attributes?
A: The transaction attribute specifies how the Container must manage transactions
for a method when a client invokes the method via the enterprise beans home
or...........
Q:
What are transaction isolation levels in EJB?
A: Transaction_read_uncommitted
,
Transaction_read_committed
Transaction_repeatable_read...........

Q:
How EJB Invocation happens?
A: Step 1: Retrieve Home Object reference from Naming Service via JNDI.
step 2: Return Home Object reference to the client.
step 3: Create me a new EJB Object through Home Object interface.
step 4: Create EJB Object from the Ejb Object
step 5: Return EJB Object reference to the client.
step 6: Invoke business method using EJB Object reference.
step 7: Delegate request to Bean (Enterprise Bean).
Q:
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?
A: 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 it?s 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-byreference? 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 ? 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. Consider the case where your ejb needs to support a
non-http-based client. This higher level of abstraction will be flexible enough to
support it.
Q:
The EJB container implements the EJBHome and EJBObject classes. For
every request from a unique client, does the container create a separate
instance of the generated EJBHome and EJBObject classes?
A: The EJB container maintains an instance pool. The container uses these instances
for the EJB Home reference irrespective of the client request. while refering the
EJB Object classes the container creates a separate instance for each client
request. The instance pool maintainence 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.
Q:

A:

Can the primary key in the entity bean be a Java primitive type such as
int?
The primary key can't be a primitive type--use the primitive wrapper classes,
instead. For example, you can use java.lang.Integer as the primary key class, but
not int (it has to be a class, not a primitive)

Q:
Can you control when passivation occurs?
A: The developer, according to the specification, cannot directly control when
passivation occurs. Although for Stateful Session Beans, the container cannot
passivate an instance that is inside a transaction. So using transactions can be a a
strategy to control passivation.
The ejbPassivate() method is called during passivation, so the developer has
control over what to do during this exercise and can implement the require
optimized logic.
Some EJB containers, such as BEA WebLogic, provide the ability to tune the
container to minimize passivation calls.
Taken from the WebLogic 6.0 DTD -"The passivation-strategy can be either
"default" or "transaction". With the default setting the container will attempt to
keep a working set of beans in the cache. With the "transaction" setting, the
container will passivate the bean after every transaction (or method call for a nontransactional invocation).
Q:
What is the advantage of using Entity bean for database operations, over
directly using JDBC API to do database operations? When would I use one
over the other?
A: Entity Beans actually represents the data in a database. It is not that Entity Beans
replaces JDBC API. There are two types of Entity Beans Container Managed and
Bean Mananged. In Container Managed Entity Bean - Whenever the instance of
the bean is created the container automatically retrieves the data from the
DB/Persistance storage and assigns to the object variables in bean for user to
manipulate or use them. For this the developer needs to map the fields in the
database to the variables in deployment descriptor files (which varies for each
vendor).
In the Bean Managed Entity Bean - The developer has to specifically make
connection, retrive values, assign them to the objects in the ejbLoad() which will
be called by the container when it instatiates a bean object. Similarly in the
ejbStore() the container saves the object values back the the persistance storage.
ejbLoad and ejbStore are callback methods and can be only invoked by the
container. Apart from this, when you use Entity beans you dont need to worry
about database transaction handling, database connection pooling etc. which are
taken care by the ejb container. But in case of JDBC you have to explicitly do the
above features. what suresh told is exactly perfect. ofcourse, this comes under the
database transations, but i want to add this. the great thing about the entity
beans of container managed, whenever the connection is failed during the
transaction processing, the database consistancy is mantained automatically. the
container writes the data stored at persistant storage of the entity beans to the
database again to provide the database consistancy. where as in jdbc api, we,
developers has to do manually.

Q:
A:

What is EJB QL?


EJB QL is a Query Language provided for navigation across a network of enterprise
beans and dependent objects defined by means of container managed persistence.
EJB QL is introduced in the EJB 2.0 specification. The EJB QL query language
defines finder methods for entity beans with container managed persistenceand is
portable across containers and persistence managers. EJB QL is used for queries
of two types of finder methods: Finder methods that are defined in the home
interface of an entity bean and which return entity objects. Select methods, which
are not exposed to the client, but which are used by the Bean Provider to select
persistent values that are maintained by the Persistence Manager or to select
entity objects that are related to the entity bean on which the query is defined.

Q:
Brief description about local interfaces?
A: EEJB was originally designed around remote invocation using the Java Remote
Method Invocation (RMI) mechanism, and later extended to support to standard
CORBA transport for these calls using RMI/IIOP. This design allowed for maximum
flexibility in developing applications without consideration for the deployment
scenario, and was a strong feature in support of a goal of component reuse in
J2EE.
Many developers are using EJBs locally -- that is, some or all of their EJB calls are
between beans in a single container.
With this feedback in mind, the EJB 2.0 expert group has created a local interface
mechanism. The local interface may be defined for a bean during development, to
allow streamlined calls to the bean if a caller is in the same container. This does
not involve the overhead involved with RMI like marshalling etc. This facility will
thus improve the performance of applications in which co-location is planned.
Local interfaces also provide the foundation for container-managed relationships
among entity beans with container-managed persistence.
Q:
What are the special design care that must be taken when you work with
local interfaces?
A: EIt is important to understand that the calling semantics of local interfaces are
different from those of remote interfaces. For example, remote interfaces pass
parameters using call-by-value semantics, while local interfaces use call-byreference.
This means that in order to use local interfaces safely, application developers need
to carefully consider potential deployment scenarios up front, then decide which
interfaces can be local and which remote, and finally, develop the application code
with these choices in mind.
While EJB 2.0 local interfaces are extremely useful in some situations, the longterm costs of these choices, especially when changing requirements and
component reuse are taken into account, need to be factored into the design

10

decision.

Q:
What happens if remove( ) is never invoked on a session bean?
A: In case of a stateless session bean it may not matter if we call or not as in both
cases nothing is done. The number of beans in cache is managed by the container.
In case of stateful session bean, the bean may be kept in cache till either the
session times out, in which case the bean is removed or when there is a
requirement for memory in which case the data is cached and the bean is sent to
free pool.

11

Q:
What is the difference between Message Driven Beans and Stateless
Session beans?
A: In several ways, the dynamic creation and allocation of message-driven bean
instances mimics the behavior of stateless session EJB instances, which exist only
for the duration of a particular method call. However, message-driven beans are
different from stateless session EJBs (and other types of EJBs) in several
significant
ways:
Message-driven beans process multiple JMS messages asynchronously, rather than
processing a serialized sequence of method calls.
Message-driven beans have no home or remote interface, and therefore cannot be
directly accessed by internal or external clients. Clients interact with messagedriven beans only indirectly, by sending a message to a JMS Queue or Topic.
Note: Only the container directly interacts with a message-driven bean by creating
bean instances and passing JMS messages to those instances as necessary.
The Container maintains the entire lifecycle of a message-driven bean; instances
cannot be created or removed as a result of client requests or other API calls.
Q:
How can I call one EJB from inside of another EJB?
A:
EJBs can be clients of other EJBs. It just works. Use JNDI to locate the Home
Interface of the other bean, then acquire an instance reference, and so forth.
Q:
A:

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.

Q:
The EJB container implements the EJBHome and EJBObject classes. For
every request from a unique client, does the container create a separate
instance of the generated EJBHome and EJBObject classes?
A:
The EJB container maintains an instance pool. The container uses these instances
for the EJB Home reference irrespective of the client request. While refering the
EJB Object classes the container creates a separate instance for each client
request. The instance pool maintainence 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

12

performance of the application server. The way it is implemented is again up to the


implementer.

13

You might also like