tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Bourque <christian.bour...@gmail.com>
Subject Re: SessionContext lookup
Date Mon, 04 May 2009 20:39:38 GMT
Thanks David!

On Mon, May 4, 2009 at 4:08 PM, David Blevins <david.blevins@visi.com> wrote:
> 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