Hi,

first of all thanks for the issue and the detailed description :)
regarding your first mail, I don't mind questions at all, so shoot as much
as possible at me, I try to answer as much as possible, sometimes I might
not know the answer :)

Regarding the tracker, yes I really would like to have it backward
compatible, as we just introduced the OSGi compliance with 6, we might
start to deprecate with 7, and maybe get rid of it with 8 ... but that's
something to be worth to consider in the future :)
The ExtenderConstants should always work, we might have missed some details
while bringing those to the HttpWhiteboardConstants ...
Especially the pattern, it might be possible that we missed out on those,
need to check though.

regards, Achim



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

> Created https://ops4j1.jira.com/projects/PAXWEB/issues/PAXWEB-1106 to
> report what I found (was able to trim it down to one Java file, plus the
> jsp/tag files)
>
>
> On Tuesday, June 20, 2017 at 10:15:26 AM UTC-4, Eben Stewart wrote:
>>
>> (I hope you don't mind all these questions - I am trying to figure out
>> the right way of doing this, and eventually might be able to contribute a
>> patch)
>>
>> So, for that tracker, it should be using both, for backwards compat and
>> OSGI spec, right?
>>
>> Also - for the JspMapping, which HttpWhiteboardConstants should it be
>> looking for to handle url mappings, etc?
>>
>> Same for ResourceMapping.....  in the sample, I had to do this:
>>
>> public ResourceMappingService() {
>>     setAlias("/");
>>     setPath("");
>>     setHttpContextId(MyHttpContextMapping.HTTP_CONTEXT_ID);
>> }
>>
>> What would be the expected HttpWhiteboardConstants way of doing this?  I
>> would expect something like:
>>
>> HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN + "=/",
>> HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX + "=",
>>
>> But I still have not been able to get that to work (hence the original
>> post of this thread)
>>
>> On Tuesday, June 20, 2017 at 2:56:08 AM UTC-4, Achim Nierbeck wrote:
>>>
>>> Hi,
>>>
>>> they actually should use the extender constants, but also the new
>>> HttpWhiteboardConstants :)
>>>
>>> regards, Achim
>>>
>>> 2017-06-20 2:22 GMT+02:00 Eben Stewart <[email protected]>:
>>>
>>>> ok, correct me if I am wrong....
>>>>
>>>> in HttpContextTracker (org.ops4j.pax.web.extender.wh
>>>> iteboard.internal.tracker)
>>>>
>>>> HttpContextElement createHttpContextElement(final
>>>> ServiceReference<HttpContext> serviceReference, final HttpContext
>>>> published) {
>>>> String httpContextId = 
>>>> ServicePropertiesUtils.getStringProperty(serviceReference,
>>>> ExtenderConstants.PROPERTY_HTTP_CONTEXT_ID);
>>>> String httpContextPath = 
>>>> ServicePropertiesUtils.getStringProperty(serviceReference,
>>>> ExtenderConstants.PROPERTY_HTTP_CONTEXT_PATH);
>>>>
>>>> those should not be using ExtenderConstants?
>>>>
>>>> ...
>>>>
>>>> On Monday, June 19, 2017 at 7:11:20 PM UTC-4, Eben Stewart wrote:
>>>>
>>>>> Sounds good... knowing the history, and the future dev plans,
>>>>> especially if they make it into the OSGI spec, is always good :D
>>>>>
>>>>> I'm taking from your comments that the ExtenderConstants are not long
>>>>> term?  It would be better to have an HttpWhiteboardConstants way of doing
>>>>> it?
>>>>>
>>>>> I think all the annotations are there - I will look into seeing what I
>>>>> can do to contribute - still wrapping my head around it all, so I want to
>>>>> have a good understanding of how it's all *supposed* to work.
>>>>>
>>>>> On Monday, June 19, 2017 at 3:07:53 PM UTC-4, Achim Nierbeck wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> thanks for the sample, will see to it.
>>>>>> regarding the comments/remarks, see my comments inline :)
>>>>>>
>>>>>> Achim
>>>>>>
>>>>>> 2017-06-19 14:50 GMT+02:00 Eben Stewart <[email protected]>:
>>>>>>
>>>>>>> Attached is a working example, the smallest I could get it (project
>>>>>>> is bndtools under Eclipse)
>>>>>>>
>>>>>>> A few points that threw me off, that did not seem clear at first
>>>>>>> (although they make sense now) - a lot of it had to do with the 
>>>>>>> whiteboard
>>>>>>> extensions to get resources and jsp support - I am not aware if the OSGI
>>>>>>> spec even handles those concepts (although the WAR/WAB is).  I do like 
>>>>>>> this
>>>>>>> way better, as it doesn't make the bundle "special" in the way in 
>>>>>>> handles
>>>>>>> servlets, jsps and resources... they are all just services.
>>>>>>>
>>>>>>
>>>>>> Just a bit of History, it might make the picture clearer for you.
>>>>>> The Pax Web Whiteboard extender exists since the WAR/WAB part has
>>>>>> been implemented, and at the time beeing that part also moved into the 
>>>>>> OSGi
>>>>>> spec. If you take a look at it, Pax Web and the Pax Url war URL-Handler 
>>>>>> are
>>>>>> part of the reference implementation for that part of the OSGi Spec.
>>>>>> So actually the Pax Web Whiteboard extension mechanism is "pretty"
>>>>>> old :)
>>>>>> About 2 years ago an Whiteboard extender mechanism had been added to
>>>>>> the OSGi spec, so we working on Pax Web tried to adapt the existing code 
>>>>>> to
>>>>>> the new spec.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> 1) The use of HttpContextMapping
>>>>>>>
>>>>>>>    - There is no default implementation of this, like JspMapping
>>>>>>>    and ResourceMapping, so also cannot use annotations to initialize?
>>>>>>>    - How to use HttpContextMapping, DefaultHttpContext (or shared),
>>>>>>>    and still be able to get to handleSecurity()
>>>>>>>
>>>>>>>
>>>>>> You can retrieve a DefaultHttpContext Instance from the HttpService
>>>>>> (or WebContainer Service), register it as your own HttpContext. Maybe 
>>>>>> that
>>>>>> helps to what your are looking for?
>>>>>>
>>>>>>
>>>>>>> 2) No DefaultHttpContext (that can be extended as an annotated
>>>>>>> Service)
>>>>>>>
>>>>>>>    - DefaultHttpContext is package private, so there is no
>>>>>>>    "automatic" way to wire in a custom HttpContext (for the 
>>>>>>> handleSecurity()
>>>>>>>    method) without doing a lot of boilerplate coding to get the service,
>>>>>>>    create the context, etc.  Since the DefaultHttpContext handles the
>>>>>>>    getResource() correctly in this scenario, it would be nice to be 
>>>>>>> able to
>>>>>>>    extend this class, and get it wired in via annotations.
>>>>>>>    - I think what I was expecting was to have something similar to
>>>>>>>    JspMapping or ResourceMapping that allowed me to specify path and 
>>>>>>> contextID
>>>>>>>    as annotations, and have the default getResources() handler, while 
>>>>>>> being
>>>>>>>    able to override the getSecurity()
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Sounds like a new feature, this in itself it worthy a new Issue, oh
>>>>>> and we do love contributions ;)
>>>>>>
>>>>>>
>>>>>>> 3) Required use of "ExtenderConstants.PROPERTY_HTTP_CONTEXT_ID"
>>>>>>> instead of "HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT"
>>>>>>> in Servlets
>>>>>>>
>>>>>>>    - Could not get the context selector to work - only the Extender
>>>>>>>    property correctly maps the servlet to the context, as created by
>>>>>>>    HttpContextMapping
>>>>>>>
>>>>>>>
>>>>>> See above, about us trying to form the existing Whiteboard extender
>>>>>> into the specified one by the OSGi Spec, so this could be a bug :)
>>>>>>
>>>>>>
>>>>>>> 4) JspMapping and ResourceMapping cannot use annotations to
>>>>>>> initialize
>>>>>>>
>>>>>>>    - Tried using the ExtenderConstants.PROPERTY_HTTP_CONTEXT_ID
>>>>>>>    annotation property - won't work - had expected to use Whiteboard, or
>>>>>>>    Whiteboard-like annotations
>>>>>>>    - Initializing in the constructor does work
>>>>>>>
>>>>>>> Sounds like another feature request.
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hope all this makes sense - not sure how to translate this into a
>>>>>>> JIRA bug or feature request.
>>>>>>>
>>>>>>
>>>>>> Makes a lot of sense now, you could open different issues / feature
>>>>>> requests for those. Oh and we do love contributions, if I didn't tell you
>>>>>> that before :)
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> In the end, I have a workaround, and a sample you might be able to
>>>>>>> use to make the scenario more clear, so that it might help others.
>>>>>>>
>>>>>>
>>>>>> yeah, thanks will form a sample out of it, so we can actually use it
>>>>>> as a reference for the integration tests for those issues/bugs/feature
>>>>>> request you'll create ;)
>>>>>>
>>>>>>>
>>>>>>> On Saturday, June 17, 2017 at 3:42:51 PM UTC-4, Achim Nierbeck wrote:
>>>>>>>
>>>>>>>> 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/samples/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/samples/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/op
>>>>>>>>>>>>>>>>>>>> tout.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 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/op
>>>>>>>>>>>>>>>>>> tout.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 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<br
>>>>>>>>>>
>>>>>>>>> --
>>>> --
>>>> ------------------
>>>> 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