I went ahead and added an example to the Embedded Jetty Cookbook.

https://github.com/jetty-project/embedded-jetty-cookbook/blob/master/src/main/java/org/eclipse/jetty/cookbook/DelayedWebAppDeployExample.java

That explains how to accomplish what you need.

Joakim Erdfelt / joa...@webtide.com


On Mon, Oct 7, 2019 at 9:36 AM Bill Ross <r...@cgl.ucsf.edu> wrote:

> (and return after the 503)
>
>
> On 10/7/19 7:35 AM, Bill Ross wrote:
> > Would anything like these chunks from my code work for you? The secret
> > is checking status in doGet().
> >
> >
> > public class GetMult extends HttpServlet {
> >
> >     private ServletData servletData;
> >
> >     public void init(ServletConfig config) throws ServletException {
> >
> >         servletData = ServletData.get(); // singleton
> >
> >     }
> >
> >     @Override
> >     public void doGet(HttpServletRequest req, HttpServletResponse res)
> >             throws ServletException, IOException  {
> >
> >         if (!servletData.isReady()) {
> >
> >             res.sendError(503, "Put another quarter million in the
> > slot");
> >
> >         }
> >
> >         // do it
> >
> >     }
> >
> > }
> >
> > public class ServletData {
> >
> >     private static Logger log =
> > LoggerFactory.getLogger(ServletData.class);
> >
> >     // calling the constructor here hangs sync on the parallel loads
> >     // for some reason
> >     private static ServletData single = null;
> >
> >     public static ServletData get() {
> >         synchronized(ServletData.class) {
> >             if (single == null) {
> >                 single = new ServletData();
> >             }
> >         }
> >         return single;
> >     }
> >
> >     private ServletData() {
> >
> >             Thread th1 = new Thread(new Runnable() {
> >                 public void run() {
> >                     try {
> >                         approvedV =
> > ApprovalDao.getAllApprovedPairs(fconn, 1,
> >                                                      "v", null,
> >                                                      true, // d0
> >                                                      null, null,
> >                                                      null);
> >                     } catch (SQLException sqe) {
> >                         log.error("approvedV: " + sqe);
> >                         System.exit(1);
> >                     }
> >                 }
> >             });
> >             th1.start();
> >
> >     }
> >
> >     public isReady() {
> >
> >         return approvedV != null;
> >
> >     }
> >
> > }
> >
> > On 10/7/19 5:34 AM, Dirk Olmes wrote:
> >> On 10/7/19 11:21 AM, Bill Ross wrote:
> >>> Why not have a ContextHandler that starts a setup thread on init, and
> >>> answers 503 until that thread is done?
> >> That's sort of what I currently do (starting a setup thread from the
> >> main servlet's init method) but that causes all kinds of trouble because
> >> the servlet context accepts requests before all the app logic is ready.
> >>
> >> Based on your suggestion combined with Greg's before I came up with this
> >> approach: Register a ContextHandler that answers 503 and let the server
> >> start normally. After the server is started I launch the setup thread
> >> where I register the real app context with the server and manually send
> >> it a start(). After the context is started I unregister the
> >> ContextHandler that answers 503.
> >>
> >> The code is here:
> >>
> https://github.com/dirk-olmes/jetty-delayed-context-startup/tree/deferred_context_startup
> >>
> >>
> >> Ok, this approach works. But I was hoping that Jetty supported something
> >> like that out of the box.
> >>
> >> -dirk
> >> _______________________________________________
> >> jetty-users mailing list
> >> jetty-users@eclipse.org
> >> 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
> > jetty-users@eclipse.org
> > 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
> jetty-users@eclipse.org
> 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
jetty-users@eclipse.org
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