tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@visi.com>
Subject Re: Setting alternate jndi prefix? (not java:comp/env)
Date Thu, 07 May 2009 20:39:46 GMT

On May 7, 2009, at 7:34 AM, louis.alexander wrote:

> I have a ConnectionFactory, some Queues and Topics that i would like  
> to be
> made available in openejb for unit testing purposes, however our  
> system uses
> the jndi names jms/MyFactory, but when i configure  MyFactory in my
> ejb-jar.xml it gets a jndi jame of java:comp/env/jms/MyFactory.  My
> understanding was that when i configure a jndi resource in a JavaEE
> environment i get two JNDI names one that i configure, and one  
> prefixed with
> java:comp/env.  I would settle for just getting the non java:comp/ 
> env/ name.
> Below is my ejb-jar.xml, any help would be appreciated.

Hi Louis,

By spec the only names an EJB or Serlvet can lookup from JNDI start  
with the "java:comp/" and "java:comp/env/" prefix.

There is a method on the javax.ejb.EJBContext called 'lookup' which is  
a convenience method around JNDI that allows the "java:comp/env/"  
prefix to be omitted, but this is really just doing this under the  
covers:

   try {
       InitialContext initialContext = new InitialContext();
       Context ctx = (Context) initialContext.lookup("java:comp/env");
       return ctx.lookup(name);
   } catch (NamingException e) {
       throw new IllegalArgumentException(e);
   } catch (RuntimeException e) {
       throw new IllegalArgumentException(e);
   }


If the ultimate goal is to get access to your Topics and Queues from  
your test case, than this technique will work:

   http://cwiki.apache.org/OPENEJBx30/testcase-with-testbean-inner-class.html

Hope this helps!

-David


Mime
View raw message