我有一个Scala应用程序,我通常像“sbt run”一样运行。现在我将整个项目打包到一个.WAR文件(通过sbt包)。然后我将文件放入webapps /目录并重新启动Jetty。日志表示已部署该应用程序。如果我去/tmp/jetty..../,我可以看到它。但是,似乎Jetty没有运行我的应用程序的“主要”方法。这种方法运行Twitter Storm拓扑,但我觉得一旦部署战争就没有真正发生过。这是我第一次与Jetty打交道。我感谢任何帮助。
答案 0 :(得分:3)
对于webapps和wars,没有main
方法。
如果您希望在部署完成时启动某些内容,则需要创建,设置和配置自定义javax.servlet.ServletContextListener,其中contextInitialized(ServletContextEvente sce)
的实现会执行您的Twitter风暴拓扑。
或强>
您可以跳过独立码头流程的整个战争部署。为此,您需要设置一个嵌入式jetty实例,您可以在自己的自定义main
中执行任何操作,从启动jetty本身到添加Web应用程序,以执行您自己的自定义代码。
请参阅OneWebApp embedded example。
在您的使用案例中,您将在server.start();
之后和server.join();
之前初始化您的“Twitter风暴拓扑”