Hi

are you looking for this?
https://github.com/ops4j/org.ops4j.pax.web/blob/master/samples/whiteboard-ds/src/main/java/org/ops4j/pax/web/samples/whiteboard/ds/WhiteboardServletWithContext.java

That should work, which version of Pax Web are you using?

regards, Achim


2017-06-16 20:25 GMT+02:00 Eben Stewart <[email protected]>:

> One step further....
>
> This works:
>
> final HttpContextMapping httpContextMapping = new HttpContextMapping() {
>
> static final String HTTP_CONTEXT_ID = "customContext";
>
> @Override
> public String getHttpContextId() {
> return HTTP_CONTEXT_ID;
> }
>
> @Override
> public String getPath() {
> return "customContext";
> }
>
> @Override
> public Map<String, String> getParameters() {
> return null;
> }
>
> @Override
> public HttpContext getHttpContext() {
> return null;
> }
> };
>
>
> Adding that, as well as calling setHttpContextId("customContext") on both
> the resourceMapping and jspMapping.
>
> A servlet also works, but only if I set
>
> ExtenderConstants.PROPERTY_HTTP_CONTEXT_ID
>
> instead of
>
> HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT
>
> Is this expected behavior?
>
> On Friday, June 16, 2017 at 11:19:00 AM UTC-4, Eben Stewart wrote:
>>
>> Ok, still trying to narrow this down to just the JSP functionality....
>>
>>
>> What I am trying to accomplish:
>> 1) As many DS-based classes, keeping to OSGI standard annotations as much
>> as possible
>> 2) use of @Component instead of @WebServlet, so that wiring to OSGI
>> components can be done in the servlets using primarily annotations (since
>> @WebServlet are not OSGI components, they are not included in the lifecycle
>> - DS annotations do not work)
>> 3) must be able to have separate web context roots for multiple
>> applications on one server
>> 4) and JSPs, preferably with custom tags (using on-the-fly compiling
>> w/Jasper)
>>
>> Here's a real simple setup:  a single jsp (/index.jsp) that references
>> the tag "layout.tag" in /WEB-INF/tags - NOT tlds
>>
>> A single Activator class with this start() method:
>>
>> public void start(final BundleContext bundleContext) throws Exception {
>> final DefaultResourceMapping rootResourceMapping = new
>> DefaultResourceMapping();
>> rootResourceMapping.setAlias("/");
>> rootResourceMapping.setPath("");
>> rootResourceMappingRegistration = 
>> bundleContext.registerService(ResourceMapping.class,
>> rootResourceMapping, null);
>>
>> final DefaultJspMapping jspMapping = new DefaultJspMapping();
>> jspMappingRegistration = bundleContext.registerService(JspMapping.class,
>> jspMapping, null);
>> }
>>
>> in root of bundle:
>>
>> - index.jsp
>> - WEB-INF
>>     - tags
>>         layout.tag
>>
>> This all works as expected.  localhost:8080/index.jsp properly shows the
>> jsp page, including the proper use of the custom tag.
>>
>> I guess the real question is, how do you properly setup a custom context
>> root via HttpContext, without the use of a war?
>>
>> What's the best practice for getting JSPs to work under a different
>> ContextRoot (as this also affects session cookie paths)?  How would I
>> modify this start() to associate a context root so it works under
>> http://localhost:8080/customcontext/index.jsp?
>>
>>
>>
>> On Friday, June 16, 2017 at 7:09:56 AM UTC-4, Achim Nierbeck wrote:
>>>
>>> Ahh .. I already thought you would be running a war project.
>>> Good to know that that is actually working.
>>> In your case you need to make sure you also have registered the taglibs
>>> as resources to your project.
>>> Take a look at [1], it should be similar.
>>> If that still doesn't seem to work we might hit a bug or something we
>>> didn't test yet fully.
>>>
>>> regards, Achim
>>>
>>> [1] - https://github.com/ops4j/org.ops4j.pax.web/tree/master/sam
>>> ples/helloworld-jsp
>>>
>>> 2017-06-15 23:06 GMT+02:00 Eben Stewart <[email protected]>:
>>>
>>>> So it seems a little bit more narrow - it *does* work, but only when
>>>> Web-ContextPath is specified in the Manifest (therefore acting as a war?)
>>>>
>>>> However, if using Whiteboard-DS, this is not used, instead a
>>>> ServletContextHelper with a 
>>>> HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH
>>>> set is used.  It will compile the JSP just fine in the context path, but
>>>> not find the .tag file in the tags directory.
>>>>
>>>> Or I am configuring/thinking about this the wrong way, which is
>>>> certainly plausible.
>>>>
>>>> Would it be helpful to attach the project zip?
>>>>
>>>> On Thursday, June 15, 2017 at 2:06:44 PM UTC-4, Achim Nierbeck wrote:
>>>>>
>>>>> hmmm ... guess we need to take a closer look at it.
>>>>> could you open an issue for that?
>>>>>
>>>>> regards, Achim
>>>>>
>>>>>
>>>>> 2017-06-15 19:49 GMT+02:00 Eben Stewart <[email protected]>:
>>>>>
>>>>>> I tried that - Jasper compiler complains about the path not starting
>>>>>> with /WEB-INF/
>>>>>>
>>>>>>
>>>>>> On Thursday, June 15, 2017 at 11:20:48 AM UTC-4, Achim Nierbeck wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm not sure, the only thing that crosses my mind right now would be
>>>>>>> the / before the WEB-INF,
>>>>>>> could you give it a try without the slash?
>>>>>>>
>>>>>>> If that still doesn't work out, please open an issue at pax web for
>>>>>>> that.
>>>>>>> OTH might want to checkout how the jsf and the primefaces samples
>>>>>>> are doing this. [1]
>>>>>>>
>>>>>>> regards, Achim
>>>>>>>
>>>>>>> [1] - https://github.com/ops4j/org.ops4j.pax.web/tree/master/sam
>>>>>>> ples/war-jsf-primefaces
>>>>>>>
>>>>>>> 2017-06-14 20:57 GMT+02:00 Eben Stewart <[email protected]>:
>>>>>>>
>>>>>>>> Very simple example... tried this under standard WAR/Tomcat
>>>>>>>> environment, and it works fine.
>>>>>>>>
>>>>>>>> In pax-web, using extended DefaultJspMapping class for JSPs,
>>>>>>>> directory structure of jar shows index.jsp in the root, and layout.tag
>>>>>>>> in /WEB-INF/tags.  It definitely sees the jsps (with the custom tag, 
>>>>>>>> they
>>>>>>>> work fine)
>>>>>>>>
>>>>>>>> index.jsp:
>>>>>>>> <!DOCTYPE html>
>>>>>>>> <%@taglib prefix="my" tagdir="/WEB-INF/tags"%>
>>>>>>>>
>>>>>>>> <my:layout>
>>>>>>>>     <jsp:attribute name="body">
>>>>>>>>       <div>
>>>>>>>>         Test
>>>>>>>>       </div>
>>>>>>>>     </jsp:attribute>
>>>>>>>> </my:layout>
>>>>>>>>
>>>>>>>> /WEB-INF/tags/layout.tag:
>>>>>>>> <!DOCTYPE html>
>>>>>>>> <%@tag description="LayoutTemplate" pageEncoding="UTF-8"%>
>>>>>>>> <%@attribute name="body" fragment="true" %>
>>>>>>>>
>>>>>>>> <html>
>>>>>>>>     <body>
>>>>>>>>         <jsp:invoke fragment="body"/>
>>>>>>>>     </body>
>>>>>>>> </html>
>>>>>>>>
>>>>>>>> However, when I attempt to load the page:
>>>>>>>>
>>>>>>>> org.apache.jasper.JasperException: /index.jsp (line: 4, column: 0) No 
>>>>>>>> tag "layout" defined in tag library imported with prefix "my"
>>>>>>>>
>>>>>>>>
>>>>>>>> Am I missing a directive somewhere?
>>>>>>>>
>>>>>>>> --
>>>>>>>> --
>>>>>>>> ------------------
>>>>>>>> OPS4J - http://www.ops4j.org - [email protected]
>>>>>>>>
>>>>>>>> ---
>>>>>>>> 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 [email protected].
>>>>>>>> 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 - [email protected]
>>>>>>
>>>>>> ---
>>>>>> 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 [email protected].
>>>>>> 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 - [email protected]
>>>>
>>>> ---
>>>> 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 [email protected].
>>>> 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 - [email protected]
>
> ---
> 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 [email protected].
> 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 - [email protected]

--- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to