- From: Paul Tyson <phtyson@sbcglobal.net>
- Date: Sun, 22 Feb 2015 14:39:50 -0600
- To: Florent Georges <fgeorges@fgeorges.org>
- Cc: EXPath CG <public-expath@w3.org>
On Sun, 2015-02-22 at 19:47 +0100, Florent Georges wrote:
> On 20 February 2015 at 20:06, Paul Tyson wrote:
>
> Hi,
>
> > Is it possible to install servlex in the root context of tomcat?
>
> Yes.
>
> > I have configured a tomcat context "/" to go to servlex.
>
> So it is the root webapp? So it is in [tomcat]/webapps/ROOT/?
>
> > My webapps.xml has a single <webapp> with @root="/". The servlex
> > WebappsParser complains this is not valid.
>
> > My goal is to make "servlex" disappear from the url, and only respond to
> > urls defined by my webapp. That is, "http://myhost.com/myapp" instead of
> > "http://myhost.com/servlex/myapp" (or any alias for "servlex").
>
> I think there is a bit of confusion here. Servlex is a Java web
> application, that you can deploy on Tomcat (for instance). It is
> itself a web container for the EXPath webapp spec. Meaning that you
> can deploy such EXPath webapps in Servlex.
>
> Since you have deployed Servlex at the root of your Tomcat instance,
> Servlex itself is available at http://myhost.com/ (and everything
> underneath...) If you want the webapps you deploy in Servlex to be
> available as http://myhost.com/myapp/, then ou can deploy them as
> usual. @root="/" is not what you want, rather root="myapp".
>
> There are 2 levels of context roots: those of Tomcat (one is
> assigned to Servlex, here the special "root" one). And those of
> Servlex itself, one being assigned to your webapp (in this case, it
> should be "myapp").
>
> Does that solve your problem?
I didn't state my problem quite right.
I am implementing something like a linked data platform, which will
resolve all urls under a particular authority. So, for instance, I want
servlex to handle all urls under http://myhost.com.
Some urls in this space are distinguished by their initial path part.
They need to be associated with a particular expath component.
So I might have urls like these:
http://myhost.com/some/special/url
http://myhost.com/some-other/special/url
http://myhost.com/any/ordinary/url
I could have dedicated expath webapps named "some" and "some-other".
(I've done this for the time being, just to make progress.) Then within
each of these webapps, there is a servlet association to the desired
component, using a pattern match relative to the webapp root.
But I still want to handle urls with initial path parts like "any",
"any1", "any-other", etc. In other words, the rest of the url space
under http://myhost.com, which, even if I could enumerate it today,
might change tomorrow. These could all be handled by a default component
(until perhaps a need arises to implement some special processing).
It would be cleaner and more flexible in this case to have a single
expath webapp rooted at "", and use servlets to dispatch "special" urls
to specialized components, and let a default url pattern handle the rest
with a generic component.
I can make tomcat use servlex as its default servlet by adding a
Host/Context element in server.xml like so:
<Context path="" docBase="servlex.war"/>
and adjusting the Host attributes regarding auto-deployment and
unpacking.
But servlex doesn't like a webapp with @root="". It complains that it
doesn't match the WebappsParser.ROOT_RE of "^[-a-zA-Z0-9]+$". I don't
know if this is required by the spec, or if it is a servlex
implementation detail. I can't find the schema definition for
webapps/webapp/@root.
It would be nice if servlex allowed @root="", with the same effect as
tomcat's Context/@path="". Then I could have in .expath-web/webapps.xml:
<webapp root=""...>
And then in the root application's expath-web.xml:
<servlet name="some-other-servlet">
<!-- associate to some-other component -->
<match url="/some-other/"/>
</servlet>
<servlet name="some-servlet">
<!-- associate to some component -->
<match url= "/some/"/>
</servlet>
<servlet name="default">
<!-- associate to a default component -->
<match url="/">
</servlet>
I am going to try to compile and run servlex with a modified
WebappsParser.ROOT_RE (to change "+" to "*") and see if it works. I
haven't looked into the code far enough to see if it will cause any
other problems. Worst case, maybe some urls with "//" to start the path
part.
Thanks for your attention to this.
Regards,
--Paul
>
> Regards,
>
Received on Sunday, 22 February 2015 20:40:21 UTC