On Apr 27, 2006, at 9:16 AM, Dain Sundstrom wrote:
I think we need to provide a non-persistent r/w global jndi tree
since there are so many apps that depend on it. In addition, I
think we need a way for users to provide a set of bindings (JNDI,
cos-naming, jaxr... really anything) to EJBs, RAs, and any GBean so
that the services they need are available where their application
expect.
I have been thinking about the binding problem for a while and just
haven't had time to work on it myself. I think we can do something
as simple as this for most services:
<gbean name="foo-binding"
class="org.apache.geronimo.naming.JndiBinding">
<reference name="object"><name>myService</...>
<attribute name="address">services/myService</...>
</...>
For J2EE services we want to bind, I think the xml above is way to
complex and we need to provide some syntactic sugar.
That's basically what I had in mind, but expressed more clearly and
concretely
thanks
david jencks
-dain
On Apr 27, 2006, at 1:22 AM, David Jencks wrote:
I'm not convinced this discussion has got to the hard parts
yet :-) I hope there turn out not to be any :-)
Please don't change stuff in the read-only java:comp/env context
since it is pretty much completely specified by the spec. Note
also that according to the spec a j2ee compliant app will only use
this jndi context, and only use the entries defined in the j2ee
deployment descriptors.
I think you can use a lot of the jndi infrastructure we already
have including the geronimo context and the references to jca
connection factories, ejbs, etc.
The missing part is how to get these references bound into your
context. One approach is to write gbeans that install a reference
when started and remove it when stopped. I would start by just
including these as plain gbeans in plans, and once that works
consider modifying the builders to add them automatically based on
xml in the geronimo plans.
An alternative might be to investigating using say Directory to
persist the references directly. I don't know enough about ldap
to know if this makes any sense at all.
thanks
david jencks
On Apr 26, 2006, at 11:56 PM, Manu George wrote:
Comments inline
On 4/26/06, Guillaume Nodet <[EMAIL PROTECTED]>
wrote: Looking more closely, it seems I was wrong.
Gbeans with a j2eeType=JCAManagedConnectionFactory have a
connectionFactoryInterface attribute that gives the name of the main
interface to use when binding the object to the JNDI context.
For EJB, GBeans with a j2eeType=StatelessSessionBean (or
EntityBean ...)
have attributes for the home and business interfaces.
So i guess it should be ok.
great
Another way to handle that would be to bind the resource to the
global
JNDI tree when the resource is created: each configuration would
contain
a list of gbeans to bind in the jndi tree when the configuration is
loaded. Else, we will need some listener to listen to gbeans
creation /
destruction so that we can bind / unbind them from the global
jndi context.
Binding the resource during creation seems to be the simpler way.
But what about the next time the server starts up. How is the
context initialised? Do we populate during startup of each
resource or application again or is persistence used in some way?
In the case of listeners the above problem won't arise.
A few questions:
* I' m wondering how the global JNDI context will coexist with the
existing ENC context, especially if the global jndi context is
read-write ... Maybe there is no need for a local jndi context ...
Yes that is a question i also have :-) . The local jndi context
allows us to have app specific contexts and this has some
advantages. A global jndi also has some advantages. Probably by
default we can use the local context and if the user specifies a
custom factory the global one or vice versa.
* what is the purpose of the jndiname property ? If this is the
key for
a gbean in the jndi tree, I thought we could use the name
attribute of
the gbean: "jdbc/TradeDataSource" , "jms/QueueConnectionFactory".
These names can also be TradeDatasource so then we may need to
add jdbc and if jdbc is there in the name as you mentioned do we
need to add jdbc to the name or not. These are a few issues which
made me propose the jndiName property .
* what about conflicting names for JCA resources... currently
there is
nothing to prevent deploying JCA resource (or other resources
that would
be bound to jndi) with the same name
I think deployment should fail with an resource already bound
exception. Not sure if this or any other validation is
implemented for the local context.
Thanks
Manu