【问题标题】:Using ServletContextListener with Jetty使用 ServletContextListener 和 Jetty
【发布时间】:2013-03-22 16:02:10
【问题描述】:

我想用嵌入式码头测试我的 ServletContextListener。它在服务器停止时调用contextDestroyed,但在服务器启动时不调用contextInitialized。我该如何解决?

Server server = new Server(PORT);
ServletContextListener myListener = ...;
WebAppContext webapp = new WebAppContext();
webapp.addEventListener(myListener);
webapp.setServer(server);
server.setHandler(webapp);
server.start(); -> doesnt call myListener.contextInitialized()

server.stop();  -> call myListener.contextDestroyed()

【问题讨论】:

  • 您是否尝试过设置上下文路径(以及可选的战争):webapp.setContextPath("/"); webapp.setWar(warURL);)。如果不是,则没有上下文真正部署
  • @BGR setContextPath("/") 没有帮助。我没有任何 web.xml 文件。
  • @BGR,但 myListener.contextDestroyed() 按设计工作。
  • 在 web.xml 文件中定义 myListener 是否有效?即使用 WebAppContext webapp = new WebAppContext(path, "/") 而不是 webapp.addeventListener

标签: java jetty servlet-3.0


【解决方案1】:

Jetty 9.3.10 也有类似的问题

您是否尝试将扩展侦听器类型设置为 true? 如果设置为false(默认),则org.eclipse.jetty.server.handler.ContextHandler.Context#checkListener中不会考虑ServletContextListener的实现@

    webapp.getServletContext().setExtendedListenerTypes(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2020-11-30
    • 2023-03-22
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多