Hi Achim, ok, but we are talking about two different things here. Maybe I elaborate this a bit:
The OSGi compendium spec contains a JNDI services specification chapter (126) that describes how OSGi services can be made available as a global JNDI reference. That is what you describe (and what is implemented by aries-jndi and is working just fine). The Web Application is specifid in chapter 128 (and pax-web is the reference implementation for that). That section does not say anything about JNDI contexts, but is referring to the Servlet 2.5 specification about the functionaltiy the WAB can use. The servle specification specifies that some tags from the web.xml (like env-entry) should be registered in the JNDI namespace of the web application. These java:comp/env JNDI subtrees should be local to the component (in case of web applications that is the whole war for historical reasons). This functionality of having a war specific JNDI tree available under java:comp/env seems to be not there. Now the questions are: Is the functionality of component specific JNDI contexts available but I am doing something wrong? Should the this functionality be there? If it is not but should be there, where would that needed to be implemented? In aries-jndi, in pax-web or in the integration code of the web container? To come back to the use of the tomcat-server.xml: what would be the expected funtionality of the GlobalNamingResources element then? Normally it's supposed to define resources that are included in all WAR's component specific JNDI contexts (but these don't seem to exist at all). Best regards Stephan S Am Mittwoch, 1. März 2017 20:05:32 UTC+1 schrieb Achim Nierbeck: > > Hi Stephan, > > it's been some time, but yes I've been able to use JNDI as lookups for > services. > Though the trick is you need to have the according service as JNDI > available. > > If you want to reference a datasource via JNDI for example, you need to > have the datasource service available as JNDI resource > so you need to add a service property to the service declaring the > osgi.jndi.service.name [1]. > > When referencing a JNDI resource make sure you have the OSGi service > lookup with it. > osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=YourJNDILookup > [2] > > regards, Achim > > [1] - > https://github.com/ANierbeck/karaf-enterprise-sample/blob/master/datasource-cookbook/src/main/resources/OSGI-INF/blueprint/datasource-cookbook.xml#L14-L18 > [2] - > https://github.com/ANierbeck/karaf-enterprise-sample/blob/master/sample-persistence/src/main/resources/META-INF/persistence.xml#L26 > > 2017-03-01 14:40 GMT+01:00 Stephan Siano <stepha...@sap.com <javascript:>> > : > >> Hi, >> >> I am currently working on PAXWEB-630 (interpret and use the >> tomcat-server.xml). One of the entities that can be configured are >> GlobalNamingResources. With my changes, I can see the configured options in >> the MBean tree, but when I tried to test them in an integration test it did >> not work. On further investigation I also did not manage to reference JNDI >> resources configured in the web.xml, neither with the tomcat container nor >> with the web container. I also tried a life karaf container, but this also >> did not work. >> >> What I did: >> 1. I added the following coding to the web.xml of the servlet war: >> >> <env-entry> >> <env-entry-name>envEntryName</env-entry-name> >> <env-entry-value>envEntryValue</env-entry-value> >> <env-entry-type>java.lang.String</env-entry-type> >> </env-entry> >> >> >> 2. I added the following coding to my servlet coding: >> >> Context env = (Context)new >> InitialContext().lookup("java:comp/env"); >> String value = (String)env.lookup("envEntryName"); >> >> In the integration test and on the normal karaf instance, i received the >> following error: >> javax.naming.NoInitialContextException: Need to specify class name in >> environment or system property, or as an applet parameter, or in an >> application resource file: java.naming.factory.initial >> at >> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)[:1.8.0_121] >> at >> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)[:1.8.0_121] >> at >> javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)[:1.8.0_121] >> at >> javax.naming.InitialContext.lookup(InitialContext.java:417)[:1.8.0_121] >> >> If I add the JNDI feature into the karaf installation, I got the >> following error: >> javax.naming.NotContextException: java:comp/env >> at >> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:165)[85:org.apache.xbean.naming:3.18.0] >> at >> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:605)[85:org.apache.xbean.naming:3.18.0] >> at >> org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161)[30:org.apache.aries.jndi.core:1.0.2] >> at >> javax.naming.InitialContext.lookup(InitialContext.java:417)[:1.8.0_121] >> >> These errors were independent from whether I was using tomcat or jetty as >> the web container. >> If I deploy the same servlet into a plain tomcat container, the lookup >> will work (and return envEntryValue) as the result. >> >> So the aries-jndi stuff seems to do something, but the context defined in >> the web.xml are not honored. >> >> Has anybody managed to get JNDI lookups from the web container >> environment running with pax-web? Is there something I missed there? I >> could not find any context lookups anywhere in the Pax-Web coding >> (including the tests). Is it possible that this feature is not available at >> all? >> >> Best regards >> Stephan >> >> -- >> -- >> ------------------ >> OPS4J - http://www.ops4j.org - op...@googlegroups.com <javascript:> >> >> --- >> You received this message because you are subscribed to the Google Groups >> "OPS4J" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to ops4j+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > > Apache Member > Apache Karaf <http://karaf.apache.org/> Committer & PMC > OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & > Project Lead > blog <http://notizblog.nierbeck.de/> > Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS> > > Software Architect / Project Manager / Scrum Master > > -- -- ------------------ OPS4J - http://www.ops4j.org - ops4j@googlegroups.com --- You received this message because you are subscribed to the Google Groups "OPS4J" group. To unsubscribe from this group and stop receiving emails from it, send an email to ops4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.