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.
