Thanks Joakim

That’s clear.

The stages do in fact respond to the same URL endpoint; I will have quick look 
if Filters (that filter based on some PDU bytes) can be a solution for this 
kind of situation

Thanks
K

> On 13 Dec 2019, at 12:03, Joakim Erdfelt <[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 
>> <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 
>> <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 
> <https://www.eclipse.org/mailman/listinfo/jetty-users>_______________________________________________
> jetty-users mailing list
> [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]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to