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: SessionContext lookup
Date Mon, 04 May 2009 20:08:46 GMT
That will also work.  Currently the EJBs are underneath  
"openejb:local/"+ jndiName.  So if the beans JNDI name is  
"OrangeLocal" it can be found under "openejb:local/OrangeLocal".

Note though that the LocalInitialContextFactory approach to looking up  
beans is the recommended approach and guaranteed stable in future  
releases and functionally equivalent to an "openejb:local/" lookup.

We can't guarantee that the locations of things under "openejb:" won't  
change and it should be considered a stop-gap solution till the  
portable global JNDI functionality is rolled out in Java EE 6 (JSR-316).

I was actually hoping we could skip the need for a proprietary global  
namespace and go straight to the portable spec defined version, but  
the discussion on that feature in the 316 group is still very much in  
progress.

-David

On May 4, 2009, at 12:29 PM, Christian Bourque wrote:

> Ok... Would it be possible to do it using the new "openejb:" jndi  
> url prefix?
>
> Thanks
>
> Christian
>
> On Mon, May 4, 2009 at 1:19 AM, David Blevins  
> <david.blevins@visi.com> wrote:
>> Yes, that will give the namespace where you can lookup any ejb from  
>> any app.
>>
>> -David
>>
>> On May 3, 2009, at 7:32 PM, Christian Bourque wrote:
>>
>>> Ok but isn't there a global JNDI namespace in OpenEJB? Like in most
>>> other Java EE implementations...
>>>
>>> On Sun, May 3, 2009 at 9:50 PM, David Blevins <david.blevins@visi.com 
>>> >
>>> wrote:
>>>>
>>>> On May 3, 2009, at 5:31 PM, Christian Bourque wrote:
>>>>
>>>>> Hi David,
>>>>>
>>>>> I already know this method but I need to inject (lookup) ejbs
>>>>> dynamically so it is useless for me...
>>>>>
>>>>> I guess my only choice left is to use the 'new InitialContext()'
>>>>> alternative?
>>>>
>>>> Doing 'new InitialContext()' is going to get you the same JNDI  
>>>> namespace
>>>> that sessionContext.lookup() gives you, so that won't work for  
>>>> what you
>>>> need.
>>>>
>>>> You can use the LocalInitialContextFactory if you want to lookup  
>>>> any bean
>>>> deployed in the container system.
>>>>
>>>>   Properties properties = new Properties();
>>>>   properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
>>>> "org.apache.openejb.client.LocalInitialContextFactory");
>>>>
>>>>   initialContext = new InitialContext(properties);
>>>>
>>>> That will bypass the bean's private jndi namespace and hook you  
>>>> up with
>>>> the
>>>> generic "client" namespace.
>>>>
>>>> -David
>>>>
>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> Christian
>>>>>
>>>>> On Sun, May 3, 2009 at 3:42 PM, David Blevins <david.blevins@visi.com

>>>>> >
>>>>> wrote:
>>>>>>
>>>>>> Hi Christian,
>>>>>>
>>>>>> Try this:
>>>>>>
>>>>>>  @Stateless
>>>>>>  public class OrangeBean implements OrangeLocal
>>>>>>  {
>>>>>>
>>>>>>      public String echo(String s)
>>>>>>      {
>>>>>>          return s;
>>>>>>      }
>>>>>>  }
>>>>>>
>>>>>>  @EJB(name="orange", beanInterface = OrangeLocal.class)
>>>>>>  @Stateless
>>>>>>  public class TestBean implements TestLocal
>>>>>>  {
>>>>>>     @Resource
>>>>>>     private SessionContext sessionContext;
>>>>>>
>>>>>>     public void test()
>>>>>>     {
>>>>>>         OrangeLocal orangeLocal = (OrangeLocal)
>>>>>> sessionContext.lookup("orange");
>>>>>>     }
>>>>>>  }
>>>>>>
>>>>>> The @EJB annotation declares a reference to the Orange bean.  The
>>>>>> sessionContext.lookup is a convenience method around 'new
>>>>>> InitialContext().lookup("java:comp/env/"+name)' and by default  
>>>>>> the
>>>>>> 'java:comp/env' namespace is empty unless references are  
>>>>>> declared via
>>>>>> annotation or xml.
>>>>>>
>>>>>> -David
>>>>>>
>>>>>>
>>>>>> On May 1, 2009, at 2:28 PM, Christian Bourque wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> What JNDI path should I use to lookup an EJB using a  
>>>>>>> SessionContext
>>>>>>> which has been injected:
>>>>>>>
>>>>>>> @Stateless
>>>>>>> public class TestBean implements TestLocal
>>>>>>> {
>>>>>>>  @Resource
>>>>>>>  private SessionContext sessionContext;
>>>>>>>
>>>>>>>  public void test()
>>>>>>>  {
>>>>>>>     sessionContext.lookup("???");
>>>>>>>  }
>>>>>>> }
>>>>>>>
>>>>>>> I've tried different combinations without any success...
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>


Mime
View raw message