【问题标题】:Jetty does not launch deployed war码头不发动部署战争
【发布时间】:2013-09-11 19:02:30
【问题描述】:

我有一个 Scala 应用程序,我通常像“sbt run”一样运行它。现在我将整个项目打包成一个 .WAR 文件(通过 sbt 包)。然后我将文件放入 webapps/ 目录并重新启动 Jetty。日志说应用程序已部署。如果我去 /tmp/jetty..../,我可以看到它。但是,Jetty 似乎没有运行我的应用程序的“主要”方法。此方法运行 Twitter Storm 拓扑,但我觉得一旦部署战争,什么都不会发生。这是我第一次与 Jetty 打交道。我很感激任何帮助。

【问题讨论】:

  • 您了解wars 和应用程序容器的工作原理吗?您的main 方法不应该被调用。
  • @chrylis:我没有,但现在我做到了 :) 谢谢!
  • 如果你在 Jetty 中运行 Storm,那太疯狂了。

标签: java scala jetty sbt war


【解决方案1】:

对于 webapps 和战争来说,没有 main 方法这样的东西。

如果您希望在部署完成后启动某些东西,您需要创建、设置和配置一个自定义 javax.servlet.ServletContextListener,您的 contextInitialized(ServletContextEvente sce) 实现将在其中执行您的 twitter 风暴拓扑。

您可以跳过在独立码头进程上部署战争的整个过程。为此,您需要设置一个嵌入式 jetty 实例,您可以在自己的自定义 main 中做任何您想做的事情,从启动 jetty 本身到添加您的 web 应用程序,再到执行您自己的自定义代码。

请参阅OneWebApp embedded example

在您的用例中,您将在 server.start(); 之后和 server.join(); 之前初始化您的“Twitter Storm 拓扑”

【讨论】:

  • 你如何运行server.start()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多