This can be done. We have to first register JNDI resources for webapps context. Then we can lookup for them. As Paul mentioned, registering those resources can done in two ways. They can be either global or per webapp. If it is global, you have place them under <GlobalNamingResources> tag in tomcat's server.xml (catalina-server.xml in our case) file. Then they can be referenced in webapp via linking them in the context.xml file of webapp.
Eg - <ResourceLink name="jdbc/MyDataSource" global="jdbc/MyDataSource" type="com.atomikos.jdbc.AtomikosDataSourceBean"/> If it is per webapp, then they can be registered by placing them in the context.xml file of the webapp it self. Eg - <Resource name="TransactionManager" auth="Container" type="com.atomikos.icatch.jta.UserTransactionManager" factory="org.apache.naming.factory.BeanFactory" /> Other properties for these resources should go inside each respective Resource tags. Make sure those classes used to define resource-type are in the classpath. Then have a reference for those resources in the web.xml of the webapp. Eg - <resource-ref> <description>Your Description</description> <res-ref-name>jdbc/MyDataSource</res-ref-name> <res-type>com.atomikos.jdbc.AtomikosDataSourceBean</res-type> <res-auth>Container</res-auth> </resource-ref> I'm currently writing an article on recent tomcat improvements, so it's better to include these details in there as-well. Thanks, Kishanthan. Ref - http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html On Mon, May 28, 2012 at 3:55 PM, Kishanthan Thangarajah <kishant...@wso2.com > wrote: > > > On Mon, May 28, 2012 at 2:51 PM, Isuru Suriarachchi <is...@wso2.com>wrote: > >> >> >> On Mon, May 28, 2012 at 2:45 PM, Paul Fremantle <p...@wso2.com> wrote: >> >>> If that is the way its "meant" to work, then we need a way to register >>> things like DataSources and Transaction context into the webapps JNDI. >>> >>> There is some good docs on how this works in Tomcat here: >>> >>> http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html#context.xml_configuration >>> >>> In Tomcat it seems you can define JNDI entries either locally in the >>> web.xml or globally and then "link" to them. >>> >> >> +1. This should work for us and looks like it's the correct way of doing >> this. Kishanthan, please look into this.. >> > > I will have a look at this and provide an update. Created a jira to track > this [1]. > > Kishanthan. > [1] https://wso2.org/jira/browse/CARBON-13277 > >> >> Thanks, >> ~Isuru >> >> >>> >>> Paul >>> >>> >>> On 28 May 2012 10:03, Isuru Suriarachchi <is...@wso2.com> wrote: >>> >>>> I had a discussion on this with Kicha and looks like the way it works >>>> is correct. When jndi resources are registered in the webapp itself, those >>>> get registered in it's own context and can be loaded anywhere within the >>>> webapp. But when resources are registered in the initial context, those are >>>> not visible to the webapps. Looks like this is the correct behavior. >>>> >>>> Can we please check whether this webapp works in previous releases? >>>> >>>> Thanks, >>>> ~Isuru >>>> >>>> On Mon, May 28, 2012 at 1:00 PM, Kishanthan Thangarajah < >>>> kishant...@wso2.com> wrote: >>>> >>>>> Here are the findings on this issue so far. >>>>> >>>>> In trunk, TransactionManager, UserTransaction etc, are getting bind >>>>> with InitialContext of javaUrlContextFactory[1] which handles the “java:” >>>>> namespace. This context is not bound to any thread or classloader. But in >>>>> a >>>>> webapp case, their context are isolated from each other and the >>>>> classloaders are bound to each webapps naming context. But the >>>>> initialContext from javaUrlContextFactory will not be accessible for them. >>>>> This is why it fails when doing lookup within a webapp. >>>>> >>>>> The javaUrlContextFactory first checks whether current thread or >>>>> classloader is bound to any context. If not, it will return the >>>>> intialContext. This is why the lookup within a service is successful since >>>>> its class loader is not bound to any naming context. The lookup from any >>>>> BE >>>>> component also works fine. >>>>> >>>>> So we have to think of a way to handle this issue. >>>>> >>>>> @Dinusha, can you try whether this webapp works in previous releases? >>>>> >>>>> Thanks, >>>>> Kishanthan. >>>>> [1] >>>>> http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.26/org/apache/naming/java/javaURLContextFactory.java#javaURLContextFactory.getInitialContext%28java.util.Hashtable%29 >>>>> >>>>> On Sun, May 27, 2012 at 11:47 AM, Dinusha Senanayaka <dinu...@wso2.com >>>>> > wrote: >>>>> >>>>>> Hi Kishanthan, >>>>>> >>>>>> On Sun, May 27, 2012 at 12:07 AM, Kishanthan Thangarajah < >>>>>> kishant...@wso2.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, May 26, 2012 at 3:05 PM, Dinusha Senanayaka < >>>>>>> dinu...@wso2.com> wrote: >>>>>>> >>>>>>>> Hi Kishanthan, >>>>>>>> >>>>>>>> The way you suggested also didn't work for me. I guess, in your >>>>>>>> sample wep-app, JNDI lookup has done for some data-source created >>>>>>>> within >>>>>>>> Tomcat itself. >>>>>>>> >>>>>>> >>>>>>> Can you share the webapp? I'll have a look into this. >>>>>>> >>>>>> >>>>>> Please find the attached web-app. It refers to the >>>>>> transaction-manager, which has bind with JNDI, while transaction-manger >>>>>> bundle get start in carbon sever. >>>>>> >>>>>> Regards, >>>>>> Dinusha. >>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Kishanthan. >>>>>>> >>>>>>>> >>>>>>>> Regards, >>>>>>>> Dinusha. >>>>>>>> >>>>>>>> >>>>>>>> On Sat, May 26, 2012 at 12:50 PM, Supun Malinga <sup...@wso2.com>wrote: >>>>>>>> >>>>>>>>> Hi Kishanthan, >>>>>>>>> >>>>>>>>> Any idea why 'normal' jndi lookup doesn't work? >>>>>>>>> If I'm a user and want to do some jndi lookup insid ea webapp I >>>>>>>>> would follow the standard way. If that's not going to work I think we >>>>>>>>> better at least document this. >>>>>>>>> >>>>>>>>> thanks, >>>>>>>>> >>>>>>>>> On Sat, May 26, 2012 at 11:31 AM, Kishanthan Thangarajah < >>>>>>>>> kishant...@wso2.com> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> This was one the issue I encountered when trying to write some >>>>>>>>>> webapps with webapp specific contextXml configuration where I store >>>>>>>>>> some >>>>>>>>>> JNDI resources in it. Normal lookup is as follow, which gives the >>>>>>>>>> exception >>>>>>>>>> when trying within a webapp, >>>>>>>>>> >>>>>>>>>> Context initCtx = new InitialContext(); >>>>>>>>>> Context envCtx = (Context) initCtx.lookup("java:comp/env"); >>>>>>>>>> >>>>>>>>>> But after some debugging at tomcat code level, I found a way to >>>>>>>>>> overcome this. We have to use the catalina jndi context >>>>>>>>>> implementation. Let >>>>>>>>>> me give some insight. >>>>>>>>>> >>>>>>>>>> Context initCtx = new InitialContext(); >>>>>>>>>> SelectorContext selectorContext = new >>>>>>>>>> SelectorContext((Hashtable<String, Object>) initCtx.getEnvironment(), >>>>>>>>>> false); >>>>>>>>>> Context envCtx = (Context) >>>>>>>>>> selectorContext.lookup("java:comp/env"); >>>>>>>>>> >>>>>>>>>> Here the SelectorContext is the Catalina JNDI Context >>>>>>>>>> implementation. First using the IntialContext environment we have to >>>>>>>>>> build >>>>>>>>>> the Catalina selector context, and then we can lookup from that. Can >>>>>>>>>> you >>>>>>>>>> please try this and let me know if it fails? You can take a look at >>>>>>>>>> the >>>>>>>>>> webapp samples here [1]. >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Kishanthan. >>>>>>>>>> [1] >>>>>>>>>> https://svn.wso2.org/repos/wso2/carbon/platform/trunk/products/as/modules/samples/product/TomcatWebApps/ >>>>>>>>>> >>>>>>>>>> On Fri, May 25, 2012 at 5:45 PM, Dinusha Senanayaka < >>>>>>>>>> dinu...@wso2.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi All, >>>>>>>>>>> >>>>>>>>>>> I have registered a object with JNDI and try to access it within >>>>>>>>>>> a web-app. But JNDI lookup get fails saying >>>>>>>>>>> "javax.naming.NameNotFoundException: Name >>>>>>>>>>> [java:comp/TransactionManager] is >>>>>>>>>>> not bound in this Context. Unable to find [java:comp]". Even I >>>>>>>>>>> tried to >>>>>>>>>>> lookup a Carbon JNDI data-source, it also fails by giving similar >>>>>>>>>>> type >>>>>>>>>>> exception. >>>>>>>>>>> >>>>>>>>>>> But same JNDI lookups work inside a Axis2 service(AAR). Any idea >>>>>>>>>>> why this can be happened ? >>>>>>>>>>> >>>>>>>>>>> Regards, >>>>>>>>>>> Dinusha. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Dev mailing list >>>>>>>>>>> Dev@wso2.org >>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> *Kishanthan Thangarajah* >>>>>>>>>> Software Engineer, >>>>>>>>>> Development Technologies Team, >>>>>>>>>> WSO2, Inc. >>>>>>>>>> lean.enterprise.middleware >>>>>>>>>> >>>>>>>>>> Mobile - +94773426635 >>>>>>>>>> Blog - *http://kishanthan.wordpress.com* >>>>>>>>>> Twitter - *http://twitter.com/kishanthan* >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Dev mailing list >>>>>>>>>> Dev@wso2.org >>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Supun Malinga, >>>>>>>>> >>>>>>>>> Software Engineer, >>>>>>>>> WSO2 Inc. >>>>>>>>> http://wso2.com >>>>>>>>> http://wso2.org >>>>>>>>> email - sup...@wso2.com <sup...@wso2.com> >>>>>>>>> mobile - 071 56 91 321 >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Kishanthan Thangarajah* >>>>>>> Software Engineer, >>>>>>> Development Technologies Team, >>>>>>> WSO2, Inc. >>>>>>> lean.enterprise.middleware >>>>>>> >>>>>>> Mobile - +94773426635 >>>>>>> Blog - *http://kishanthan.wordpress.com* >>>>>>> Twitter - *http://twitter.com/kishanthan* >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Kishanthan Thangarajah* >>>>> Software Engineer, >>>>> Development Technologies Team, >>>>> WSO2, Inc. >>>>> lean.enterprise.middleware >>>>> >>>>> Mobile - +94773426635 >>>>> Blog - *http://kishanthan.wordpress.com* >>>>> Twitter - *http://twitter.com/kishanthan* >>>>> >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> Dev@wso2.org >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Isuru Suriarachchi >>>> Senior Technical Lead >>>> WSO2 Inc. http://wso2.com >>>> email : is...@wso2.com >>>> blog : http://isurues.wordpress.com/ >>>> >>>> lean . enterprise . middleware >>>> >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Paul Fremantle >>> CTO and Co-Founder, WSO2 >>> OASIS WS-RX TC Co-chair, VP, Apache Synapse >>> >>> UK: +44 207 096 0336 >>> US: +1 646 595 7614 >>> >>> blog: http://pzf.fremantle.org >>> twitter.com/pzfreo >>> p...@wso2.com >>> >>> wso2.com Lean Enterprise Middleware >>> >>> Disclaimer: This communication may contain privileged or other >>> confidential information and is intended exclusively for the addressee/s. >>> If you are not the intended recipient/s, or believe that you may have >>> received this communication in error, please reply to the sender indicating >>> that fact and delete the copy you received and in addition, you should not >>> print, copy, retransmit, disseminate, or otherwise use the information >>> contained in this communication. Internet communications cannot be >>> guaranteed to be timely, secure, error or virus-free. The sender does not >>> accept liability for any errors or omissions. >>> >>> >> >> >> -- >> Isuru Suriarachchi >> Senior Technical Lead >> WSO2 Inc. http://wso2.com >> email : is...@wso2.com >> blog : http://isurues.wordpress.com/ >> >> lean . enterprise . middleware >> >> > > > -- > *Kishanthan Thangarajah* > Software Engineer, > Development Technologies Team, > WSO2, Inc. > lean.enterprise.middleware > > Mobile - +94773426635 > Blog - *http://kishanthan.wordpress.com* > Twitter - *http://twitter.com/kishanthan* > > -- *Kishanthan Thangarajah* Software Engineer, Development Technologies Team, WSO2, Inc. lean.enterprise.middleware Mobile - +94773426635 Blog - *http://kishanthan.wordpress.com* Twitter - *http://twitter.com/kishanthan*
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev