I have multiple WARs that rely on the same depenency jar, which contains
EJBs, including the @LocalBean, @Local, and @Remote classes.  One WAR is the
host for the EJB, the others use the remote interface via JNDI. 

Using the default JNDI naming scheme, this cause conflicts when initializing
the server, as it tries to create the JNDI name for the bean each time the
dependency is located.  

I can repackage the dependency, to put the Remote interfaces in its own jar,
so the actual bean classes aren't detected and initialized when the server
starts.  I'm not a fan of this as it involves splitting up an otherwise
logically coherent unit, and adds a separate dependency to manage for host
WAR.

Currently, I use the nested JNDI naming scheme ("{module}/{beanName}"). This
prevents conflicts when initalizing the server/servlets, but I have to
access the bean from the server-wide URL ( "http://host/tomee/ejb/"; ), and
then provide the nested namespace/bean name ( "webapp/ejbName" ).

What I'd rather have:

provider-url : "http://host/webapp/ejb/";
jndi name : Bean.class.getSimpleName()

The idea being that each WAR has its own OpenEjb configuration, and nested
access URL.  I can't find any examples like this, so I don't know if it's
possible to configure it using the provided facilities.  At the least, a
filter which converts all calls to a url-filter into JNDI calls in the
applications namespace would do the job.

I'd also be interested in simply inserting a config file or option into my
WARs which prevents them from initializing the JNDI for that app, to prevent
conflicts.

Can anybody offer some suggestions?  Is it possible to have separate openejb
instances per application, or is it always a global server thing?  What kind
of options do I have to tweak openEJB at the web-app, as opposed to the
server level?



--
View this message in context: 
http://openejb.979440.n4.nabble.com/Working-around-JNDI-conflicts-tp4657328.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Reply via email to