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
