You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by govinda <ba...@gmail.com> on 2009/05/04 17:19:47 UTC

JNDI context

How do I connect to a datasource thru code without context "java:comp/env"

Context envContext  = (Context)initContext.lookup("java:comp/env");

I just want to connect to DB like this

DataSource ds = (DataSource)initContext.lookup("jdbc/LiferayPool");

Is it possible, if so where do I specify java jndi context ("java:comp/env")
outside the code?

Thanks
-- 
View this message in context: http://www.nabble.com/JNDI-context-tp23370580s134p23370580.html
Sent from the Apache Geronimo - Dev mailing list archive at Nabble.com.


Re: JNDI context

Posted by Jack Cai <gr...@gmail.com>.
What's your real purpose behind this (not specifying "java:comp/env")?

If it is just that you hate this string, you can use the "@Resource"
annotation to inject the datasource in container-managed artifacts (Servlet,
EJB, etc.).
    @Resource (name="jdbc/LiferayPool")
    private DataSource ds;

-Jack

2009/5/5 David Jencks <da...@yahoo.com>

> This is a user list question.  If you have further questions on this
> subject pleas ask there and only there.
> On May 4, 2009, at 8:19 AM, govinda wrote:
>
>
>> How do I connect to a datasource thru code without context "java:comp/env"
>>
>> Context envContext  = (Context)initContext.lookup("java:comp/env");
>>
>> I just want to connect to DB like this
>>
>> DataSource ds = (DataSource)initContext.lookup("jdbc/LiferayPool");
>>
>
> Any such jndi name is going to be container specific.  The java:comp/ stuff
> is there specifically so you can use the same jndi name in every container,
> so you don't have to recompile your app for every container.
>
> For information on the geronimo absolute jndi names, see
> http://cwiki.apache.org/GMOxDOC21/jndi.html
>
> Basically what you should do is deploy your datasource, restart geronimo,
> and look in var/log/geronimo.log for the log message telling you what the
> jndi location is.
>
>
>>
>> Is it possible, if so where do I specify java jndi context
>> ("java:comp/env")
>> outside the code?
>>
>
> As far as I understand what you are asking for in this sentence, it is not
> possible.
>
> thanks
> david jencks
>
>
>>
>> Thanks
>> --
>> View this message in context:
>> http://www.nabble.com/JNDI-context-tp23370580s134p23370580.html
>> Sent from the Apache Geronimo - Dev mailing list archive at Nabble.com.
>>
>>
>

Re: JNDI context

Posted by David Jencks <da...@yahoo.com>.
This is a user list question.  If you have further questions on this  
subject pleas ask there and only there.
On May 4, 2009, at 8:19 AM, govinda wrote:

>
> How do I connect to a datasource thru code without context  
> "java:comp/env"
>
> Context envContext  = (Context)initContext.lookup("java:comp/env");
>
> I just want to connect to DB like this
>
> DataSource ds = (DataSource)initContext.lookup("jdbc/LiferayPool");

Any such jndi name is going to be container specific.  The java:comp/  
stuff is there specifically so you can use the same jndi name in every  
container, so you don't have to recompile your app for every container.

For information on the geronimo absolute jndi names, see http://cwiki.apache.org/GMOxDOC21/jndi.html

Basically what you should do is deploy your datasource, restart  
geronimo, and look in var/log/geronimo.log for the log message telling  
you what the jndi location is.

>
>
> Is it possible, if so where do I specify java jndi context  
> ("java:comp/env")
> outside the code?

As far as I understand what you are asking for in this sentence, it is  
not possible.

thanks
david jencks
>
>
> Thanks
> -- 
> View this message in context: http://www.nabble.com/JNDI-context-tp23370580s134p23370580.html
> Sent from the Apache Geronimo - Dev mailing list archive at  
> Nabble.com.
>


Re: JNDI context

Posted by Peter Petersson <pe...@gmail.com>.
govinda wrote:
> How do I connect to a datasource thru code without context "java:comp/env"
>
> Context envContext  = (Context)initContext.lookup("java:comp/env");
>
> I just want to connect to DB like this
>
> DataSource ds = (DataSource)initContext.lookup("jdbc/LiferayPool");
>
> Is it possible, if so where do I specify java jndi context ("java:comp/env")
> outside the code?
>   
If I have not misunderstood you last question and although I am not a G 
developer I hope no one minds I jump in an try to help out.

In Liferay there are several ways to set up a database connection but 
you probably want to use Geronimo:s connection pool and sins Liferay 
5.2.2 it is ones again possible to set up the application server 
connection pools JNDI name by specify the following line in your 
portal-ext.properties file.

###application server connection pools JNDI name
jdbc.default.jndi.name=jdbc/LiferayPool
 
I am not sure the following is required but I also have this in the end 
of the web.xml file.
    <!-- Geronimo usage -->
       <resource-ref>
               <res-ref-name>jdbc/LiferayPool</res-ref-name>
               <res-type>javax.sql.DataSource</res-type>
               <res-auth>Container</res-auth>
               <res-sharing-scope>Shareable</res-sharing-scope>
       </resource-ref>

Hope this helps.
For more information about this take a look at 
http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Database%20Configuration


regards
    peter petersson

> Thanks
>