Hello Everyone,
I was trying to follow few threads on EJB 2.0 specification(PFD 2.0). My
concern is whether Local Interfaces should have JNDI name or not ?
Local Interfaces are not remotely available in the network and they can be
accessed only locally(In the same VM), i.e. Local Interfaces are not
available through JNDI lookups from other VMs. To access these Local
Interfaces the specification provides a way through ejb references.
<spec>
PAGE 417
20.3.1.2
Declaration of EJB references in deployment descriptor
Although the EJB reference is an entry in the enterprise bean's environment,
the Bean Provider must not
use a env-entry element to declare it. Instead, the Bean Provider must
declare all the EJB references
using the ejb-ref and ejb-local-ref elements of the deployment descriptor.
This allows the
ejb-jar consumer (i.e. Application Assembler or Deployer) to discover all
the EJB references used by
the enterprise bean.
</spec>
<spec>
PAGE 407
<!--
The ejb-local-ref element is used for the declaration of a reference
to an enterprise bean's local home. The declaration consists of an
optional description; the EJB reference name used in the code of the
referencing enterprise bean; the expected type of the referenced
enterprise bean; the expected local home and local interfaces of the
referenced enterprise bean; and optional ejb-link information, used
to specify the referenced enterprise bean.
Used in: entity, session, message-driven
-->
<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type,
local-home, local, ejb-link?)>
</spec>
At this point I would like to draw your attention to a new direction, in the
web.xml there is a way provided to access EJBs from JSP or Servlets through
<ejb-ref> tag. For example,
<ejb-ref>
<description />
<ejb-ref-name>ejb/MyChecking</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>proton.bank.CheckingHome</home>
<remote>proton.bank.Checking</remote>
<ejb-link />
</ejb-ref>
Now if my WebContainer and the EjbContainer are both running in the same
JVM, then a similar strategy can be followed to access the Local Interfaces
through <ejb-local-ref> tag in the WEB.XML. But this is very much debatable.
To achieve this support should also come from the web side as well.
Coming back to my original point, IMHO the Local Interfaces should not be
exposed through JNDI names, as they are not available in the network(They
are not remote, nor serializable). These interfaces should be accessed
through only by the <ejb-local-ref> and the Container should be able to
resolve this at the deployment time. *Having two JNDI names for the same
bean !!* , specification is not very much clear about this issue and is very
much debatable.
Thanks & Regards,
Gautam Borah
Server Team
www.pramati.com
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".