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 05:19:24 GMT
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