Thanks Greg.

Multi-CPU is theoretical for now, tho conceivably I could use the idea for balancing internal resources as part of an AI's personality.

My scratch plan if I had to scale to multi-head was to use node.js, based on reputation a few years ago, so research would be needed.

With an average of 2 sessions a day, scaling is more about dreaming my old life than a need. :-)

Bill

On 12/13/19 6:09 PM, Greg Wilkins wrote:
Bill,

Jetty has Proxy and Middleman components that can be used for load balancing.   Using jetty for balancing will never be as efficient as dedicated balancers, however it can be a good idea if:  + the decision of what back end to use is complex and needs to inspect the request  + if processing/transformation is to be done in the load balancer of either request/response  + the application is much more of a load than running the protocol, so that any extra inefficiencies of app space balancing would be outweighed by the gains from reducing load on the app servers themselves.

regards

On Sat, 14 Dec 2019 at 11:25, Bill Ross <[email protected] <mailto:[email protected]>> wrote:

    > But the question would be, how is the correct handler going to
    be picked from that list?

    Out of curiosity, would it be efficient/maintainable to use Jetty
    as a load balancer, such that each handler would manage load for a
    given back end, and they'd be chosen by sorting handlers (hanglers
    once you can misspell) according to load?

    Bill

    On 12/13/19 3:07 PM, Greg Wilkins wrote:

    Note also that if you have a need, there is nothing preventing
    you from having a HandlerList within a ContextHandler.

    But the question would be, how is the correct handler going to be
    picked from that list?

    For ContextHandlerCollection, the context path (and some
    virtual host stuff) is used to pick which ContextHandler the
    request is given to.
    For a normal HandlerList, each listed handler is called in turn
    until one of them handles it.
    A ServletHandler picks a servlet by the pathInfo and will always
    handle a request - if only with a 404, so a HandlerList of normal
    ServletHandlers makes little sense.

    But if you have some other criteria to select between different
    ServletHandlers, then you can have a custom HandlerList within a
    context that could apply that criteria.






    On Fri, 13 Dec 2019 at 23:55, Karel Goderis <[email protected]
    <mailto:[email protected]>> wrote:

        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]
        <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

        _______________________________________________
        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



-- Greg Wilkins <[email protected] <mailto:[email protected]>> CTO
    http://webtide.com

    _______________________________________________
    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



--
Greg Wilkins <[email protected] <mailto:[email protected]>> CTO http://webtide.com

_______________________________________________
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