Hi,

see my comments inline

regards, Achim


2017-03-02 7:58 GMT+01:00 Stephan Siano <stephan.si...@sap.com>:

> 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).
>

afaik this part was never considered, as in an OSGi env you usually
reference services from the outside.


>
> 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?
>

not to my knowledge.


> 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?
>
>
that's a good question, right now my gut feeling tells me it would be part
of the aries-jndi thing, as with an JEE server, a webcontainer always uses
the surrounding JNDI environment.


> 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).
>
>
we never had this requirement before.



> 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>:
>>
>>> 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(NamingManag
>>> er.java:662)[:1.8.0_121]
>>>     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext
>>> .java:313)[:1.8.0_121]
>>>     at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialCo
>>> ntext.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
>>>
>>> ---
>>> 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.
>>> 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.
>



-- 

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.

Reply via email to