【问题标题】:Is an embedded Jetty Server guaranteed to be "ready for business" when the call to Server.start() returns?当对 Server.start() 的调用返回时,嵌入式 Jetty 服务器是否保证“为业务做好准备”?
【发布时间】:2010-12-19 16:42:29
【问题描述】:

我无法找到有关嵌入式 Jetty 服务器是否保证完全初始化并准备好在对 Server.start() 的调用返回时接收请求的任何信息。

我也无法通过调试找到任何结论性的东西。

如果调用返回时服务器可能仍在初始化,是否有任何方法可以注册回调,以便在它确实准备好执行操作时通知我?

【问题讨论】:

    标签: java jetty embedding


    【解决方案1】:

    是的,当从Server.start() 返回时,服务器已准备就绪。

    您可以使用Server.addLifeCycleListener(listener) 注册LifeCycle.Listener 以获得启动或关闭事件的通知。如果您查看Server.start() 的来源,您会发现它最后调用了Listener.lifeCycleStarted()

    【讨论】:

    • 是的,我研究了源代码并看到了这个。但是,当服务器状态提升为“STARTED”时,该事件被推送到任何附加的侦听器,并且该方法返回。如果 Servlet/资源已初始化并准备好工作,那是另一个问题。通过使用断点,我能够“冻结”在 Jetty 将处理请求的状态,但无需初始化 servlet。但是,当状态设置为“STARTED”时,我无法弄清楚服务器是否可以保持这种状态。
    【解决方案2】:

    不是一个完整的答案,但可能取决于 servlet 是否“在启动时加载”?

    【讨论】:

    • 好点。如果启用“启动时加载”,当方法返回时,假设 Jetty 将加载/初始化它们是否安全?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2012-04-21
    • 2022-08-18
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多