Hello Joakim,
Adding a DefaultServletFilerServer Servlet on / is no good for us since
we have our own Servlet there. But if I understand you correctly we
should add a DefaultServletFileServer on the other context paths
(/scripts, /images etc) instead of using the
ContextHandler/ResourceHandler pairs.
The features you mention are supported by our own Servlet for static
content on different levels but although the static resources involved
in this case are very small and never change that support would be nice
to have here as well. I will look into it.
Kind regards,
Silvio
On 11/29/21 16:09, Joakim Erdfelt wrote:
You don't even need the ResourceHandler or ContextHandler.
Your ServletContextHandler does all of that already.
Just set a reasonable ResourceBase there and define a DefaultServlet
on url-pattern of `/` (be sure to name the servlet!)
See:
https://github.com/jetty-project/embedded-jetty-cookbook/blob/jetty-10.0.x/src/main/java/org/eclipse/jetty/cookbook/DefaultServletFileServer.java
You can even have multiple DefaultServlet added serving different content.
See:
https://github.com/jetty-project/embedded-jetty-cookbook/blob/jetty-10.0.x/src/main/java/org/eclipse/jetty/cookbook/DefaultServletMultipleBases.java
If you do it this way, then you get more features, such as request
range support, better caching, last-modified support, etag support, etc...
Joakim Erdfelt / [email protected]
On Mon, Nov 29, 2021 at 8:23 AM Silvio Bierman
<[email protected]> wrote:
Hi Lachlan,
Well, that was spot on! I added a call to
setResourceBase(directoryPath) to the ContextHandler (just like is
done on the ResourceHandler) and that does indeed work as intended.
But to be honest I am confused now. I was surprised to find that
setResourceBase exists at all on the ContextHandler. I was under
the impression the ContextHandler defines the contextPath so it
picks up the requests with URLs that match the path. The
ResourceHandler defines the resourceBase to map URL paths inside
the contextPath to directories and files. The ContextHandler then
uses the ResourceHandler to delegate requests to. Having a
resourceBase on the ContextHandler tells me my understanding of
things is wrong (which is not unlikely at all of course).
Kind regards,
Silvio
On 11/29/21 15:01, Lachlan Roberts wrote:
Silvio,
I think the fix for this is to add the baseResource to the
ContextHandler as well as on your ResourceHandler.
Try that and let me know if it fixes it for you.
If that doesn't work revert back to using
AllowSymLinkAliasChecker, but definitely do not use ApproveAliases.
cheers
On Tue, Nov 30, 2021 at 12:15 AM Silvio Bierman
<[email protected]> wrote:
Thanks Lachlan,
It is not a big problem for us to skip 10.0.7 and wait for
10.0.8 so keeping things as they are now is probably the
simplest option. On the other hand, if we happen to push out
an update of our core application in the meantime I may
decide to add the ApproveAliases and move to 10.0.7. Anyway I
will be looking forward to 10.0.8.
Thanks for the help,
Kind regards,
Silvio
On 11/29/21 03:02, Lachlan Roberts wrote:
Silvio,
Thanks for the info, I will look into it.
The intention of the AliasChecker change was not to break
the usage of symlinks but to improve safety. The fact that
you have experienced a change in behaviour probably means
there is a bug in the new SymlinkAllowedResourceAliasChecker
implementation.
For now you should be able to revert to the previous
behaviour by adding the AllowSymLinkAliasChecker which has
now been deprecated. But we will try to get a fix out in the
upcoming 10.0.8 release.
cheers
On Mon, Nov 29, 2021 at 12:39 PM Silvio Bierman
<[email protected]> wrote:
Hi Lachlan,
An additional observation:
Th symbolic link helps us (among other things) to use
the same configuration properties in various development
and testing environments as we use in most production
environments. I manually modified one development
configuration to not use the symbolic link and upgraded
it to Jetty 10.0.7. And as you expected that does work
correctly.
Can you explain to me what the issue is with having
symbolic links in paths and what the consequence would
be if I turned off this behavior in production? I would
expect symbolic links in paths to be transparent to the
application.
Kind regards,
Silvio
On 11/29/21 00:53, Lachlan Roberts wrote:
Hi Silvio,
Do you have any symlink in the path to these static
resources? If so, this could be related to the
AliasChecker changes. You can test if this is
related to the AliasCheckers by adding the
`ContextHandler.ApproveAliases` to the `ContextHandler`
and see if you still get the 404's. But even if this
fixes it, do not add `ContextHandler.ApproveAliases` to
your production code.
Would you be able to post a simple reproducer that
works on 10.0.6 but not on 10.0.7?
cheers,
Lachlan
On Sun, Nov 28, 2021 at 2:40 AM Silvio Bierman
<[email protected]> wrote:
Hello all,
I use an embedded Jetty 10 server. My server setup
code adds a number of
ContextHandlers that each wrap a ResourceHandler to
server static
content on paths like /images and /scripts etc.
Finally a single
ServletContextHandler that wraps a ServletHolder is
added at / to handle
all other requests.
This same setup code has been used through various
Jetty versions (with
some slight modifications for major version jumps)
and has worked fine
up until Jetty 10.0.6. But starting from Jetty
10.0.7 it no longer works
because requests for the static contents all result
in 404 errors.
Did anything change in the 10.0.7 release that
could explain this? I did
not see anything in the change log that sounds
remotely related but I
could be wrong.
Thanks,
Silvio
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list,
visithttps://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list,
visithttps://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list,
visithttps://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list,
visithttps://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users