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] On Fri, Dec 13, 2019 at 4:37 AM Karel Goderis <[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]> 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] > > > On Fri, Dec 13, 2019 at 2:36 AM Karel Goderis <[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] >> 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 > > > _______________________________________________ > 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
