On 13 Dec 2019, at 12:03, Joakim Erdfelt <[email protected]
<mailto:[email protected]>> wrote:
Since you haven't details what your ServletHandler are actually
trying to do ("stage 1, stage 2, stage 3" means nothing), this
reply is generic.
A ServletContextHandler belongs to a single context Path.
It manages the ServletContext for all Servlets and Filters and
Listeners belonging to that ServletContext.
Each Servlet has a url-pattern it can belong to
Each Filter has a url-pattern it can participate in.
If you have multiple ServletHandlers, and expect them to respond
on the same url-pattern, then you have a problem.
You should only have 1 "endpoint" to a HTTP resource.
You *can* have that single "endpoint" respond differently
depending on request details (such as method, Content-Type,
existence of request body content, Accept headers, Cache headers,
etc...)
But that difference isn't handled by multiple servlets, it's
handled by a single servlet, with logic to produce different
responses accordingly.
If you have multiple ServletHandlers because some handlers
respond on different url-patterns, then great! You just use
different url-patterns when you add them to the
ServletContextHandler.
If you have multiple ServletHandlers because each handler does
some subset of actions, then you are abusing ServletHandlers.
Use Filters for subsets and Servlets for "endpoint" logic.
Joakim Erdfelt / [email protected] <mailto:[email protected]>
On Fri, Dec 13, 2019 at 4:37 AM Karel Goderis
<[email protected] <mailto:[email protected]>> wrote:
Yes,
I am using a ServletConextHandler, however the question is :
can you do the equivalent of HandlerList but with Servlets.
AFAIK it is impossible to register different Servlets using
the same Context path
Tx
K
On 13 Dec 2019, at 11:33, Joakim Erdfelt <[email protected]
<mailto:[email protected]>> wrote:
Use a ServletContextHandler.
Don't use ServletHandlers, those are internal structures not
meant for direct usage.
Use ServletContextHandler.addServlet() and
ServletContextHandler.addFilter()
You can add the Servlet as a Class reference, or as a
Servlet instances (via a ServletHolder).
Joakim Erdfelt / [email protected] <mailto:[email protected]>
On Fri, Dec 13, 2019 at 2:36 AM Karel Goderis
<[email protected] <mailto:[email protected]>> wrote:
Hi,
I have the practical need of splitting up a protocol
implementation in 3 “parts”, because the protocol does a
kind of “staged” setup whereby a connection goes through
these steps in order. I also need the benefits of
Contexts to maintain some state. Ideally, I would like
to have the equivalent of a HandlerList but for Servlets
being added to a ServletContextHandler. How could this
be achieved?
Wrt to this question, I am confused about the
ServletHolder.setServletHandler(). What is its purpose?
Does it replace the handle() methods of the
Servlet.class that is fed to the ServletHolder?
Obviously, I tried to use setServletHandler() with a
HandlerList, but that does not work. It is a bit lacking
in the documentation and examples of how to used
embedded Jetty.
My first attempt was something along the lines of
HandlerList setupHandlers = new HandlerList();
setupHandlers.addHandler(new StageOneHandler());
setupHandlers.addHandler(new StageTwoHandler());
setupHandlers.addHandler(new StageThreeHandler());
ServletHandler setupHandler = new ServletHandler();
setupHandler.setHandler(setupHandlers);
ServletHolder setupHolder = new
ServletHolder(DefaultServlet.class);
pairSetupHolder.setServletHandler(setupHandler);
But I clearly missed something from an architecture
point of view
The (IMO) ugly workaround is to put the 3 stages in a
regular Servlet, and do an if-then based on some bytes
of the protocol payload, but I prefer the more beautiful
solution ;-) Any help is welcome
Thanks
Karel
_______________________________________________
jetty-users mailing list
[email protected] <mailto:[email protected]>
To change your delivery options, retrieve your password,
or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected] <mailto:[email protected]>
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected] <mailto:[email protected]>
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
[email protected] <mailto:[email protected]>
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users