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
persistence and 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.
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 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.
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.
How does a servlet communicate with a JSP page?
The following code snippet shows how a servlet
instantiates a bean and initializes it with FORM data posted by a browser. The
bean is then placed into the request, and the call is then forwarded to the JSP
page, Bean1.jsp, by means of a request dispatcher for downstream processing.
What is the difference between find and select methods in EJB?
A select method can return a persistent field (or a collection thereof) of a
related entity bean. A finder method can return only a local or remote
interface (or a collection of interfaces).
Because it is not exposed in any of the local or remote interfaces, a select
method cannot be invoked by a client. It can be invoked only by the methods
implemented within the entity bean class. A select method is usually invoked by
either a business or a home method.
A select method is defined in the entity bean class. For bean-managed
persistence, a finder method is defined in the entity bean class, but for
container-managed persistence it is not.
No comments:
Post a Comment