What is
EJB ?
|
EJB stands for Enterprise JavaBean and is
a widely-adopted server side component architecture for J2EE. It
enables rapid development of mission-critical application that
are versatile, reusable and portable across middleware while
protecting IT investment and preventing vendor lock-in.
|
What is
session Facade?
|
Session Facade is a design pattern to
access the Entity bean through local interface than accessing
directly. It increases the performance over the network. In this
case we call session bean which on turn call entity bean.
|
|
What is EJB role in J2EE? |
EJB technology is the core of J2EE. It
enables developers to write reusable and portable server-side
business logic for the J2EE platform.
|
What is
the difference between EJB and Java beans?
|
EJB is a specification for J2EE server,
not a product; Java beans may be a graphical component in IDE
|
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.
|
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
|
How many
enterprise beans?
|
There are three kinds of enterprise beans:
1. session beans,
2. entity beans, and
3. message-driven beans.
|
What is
message-driven bean?
|
A message-driven bean combines features of
a session bean and a Java Message Service (JMS) message
listener, allowing a business component to receive JMS. A
message-driven bean enables asynchronous clients to access the
business logic in the EJB tier.
|
What is
Entity Bean and Session Bean ?
|
Entity Bean is a Java class which
implements an Enterprise Bean interface and provides the
implementation of the business methods. There are two types:
Container Managed Persistence(CMP) and Bean-Managed
Persistence(BMP).
Session Bean is used to represent a workflow on behalf of a
client. There are two types: Stateless and Stateful. Stateless
bean is the simplest bean. It doesn't maintain any
conversational state with clients between method invocations.
Stateful bean maintains state between invocations.
|
How EJB
Invocation happens?
|
Retrieve Home Object reference from Naming
Service via JNDI. Return Home Object reference to the client.
Create me a new EJB Object through Home Object interface. Create
EJB Object from the Ejb Object. Return EJB Object reference to
the client. Invoke business method using EJB Object reference.
Delegate request to Bean (Enterprise Bean).
|
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 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-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
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 EJBs 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.
|
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?
|
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 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.
|
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).
|
Can you
control when passivation occurs?
|
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 non-transactional invocation).
|
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?
|
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.
|