Hi, thanks, sounds like a good idea. Yep, that's a standard scenario, so it could be a bug you found, especially since the non OSGi spec whiteboard properties seem to work.
regards, Achim 2017-06-17 17:17 GMT+02:00 Eben Stewart <[email protected]>: > Sure... let me get something stripped down to the essentials.... > > Maybe show how I got it to work, and how I would have expected it to work, > given the current docs? Esp if I can get it working with all annotations > (via annotations on JspMapping and ResourceMapping classes) - no Activator > class, > > I don't know if it's necessarily a bug, but rather a disconnect or > clarification (possibly just in documentation/samples). > > At a minimum, it might make a good basis for a sample? I can't be the only > one trying to do a Servlet->forward to JSP->Custom tags in jsp. Pretty > standard scenario. > > On Friday, June 16, 2017 at 4:27:52 PM UTC-4, Achim Nierbeck wrote: >> >> Ok, >> >> maybe you can provide a little test project, we could use it as a sample >> and as foundation for an integration test. >> Sounds like you have a special condition we don't have covered right now. >> So it might be a bug. >> >> regards, Achim >> >> >> 2017-06-16 22:06 GMT+02:00 Eben Stewart <[email protected]>: >> >>> I'm using 6.0.6.snapshot >>> >>> On Friday, June 16, 2017 at 3:10:56 PM UTC-4, Achim Nierbeck wrote: >>>> >>>> Hi >>>> >>>> are you looking for this? >>>> https://github.com/ops4j/org.ops4j.pax.web/blob/master/sampl >>>> es/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. >>> >> >> >> >> -- >> >> 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.
