TomEE / Tomcat - 部署后运行一些东西

时间:2014-09-11 11:59:50

标签: java tomcat servlets deployment tomee

我有一个应用程序,它被打包成战争然后部署在TomEE中。 我们都很高兴。

但是,在这个应用程序中,我有一个服务,而不是一个Web服务,只是一个不提供任何响应的servlet,只是为了做一些事情,比如启动一个作业调度程序。目前我通过一个ant任务启动这个作业调度程序,该任务调用一个调用该服务的类。

我关心的是什么?

我希望在我的应用程序部署完成后立即启动此作业调度程序,小心,而不是在部署时,但部署后,因为如果是在部署过程中,请猜猜是什么,我想要打电话给尚未部署的东西, voila ,致命的404。

我尝试了什么?

  • TomEE / Tomcat上下文侦听器 - 这些是在部署过程时执行的;
  • 使用load-on-startup标记的Servlet实现我也确信我的servlet是最后执行的servlet - 这些也是在部署过程时执行的;
  • 上面介绍的方法,但是我试图让一些内线程处于休眠状态,以便让TomEE完成他的部署过程,但似乎这些内部线程也让TomEE处于睡眠状态。

所以,如果您可以帮我提出如何在部署应用程序后启动某些内容,我将非常感谢您。

谢谢你,
安德烈

1 个答案:

答案 0 :(得分:0)

目前我会描述我为解决问题所做的工作,但在我看来,这只是一种解决方法。

正如我在第一篇文章中所说,我有一堆servlet,其中一个是专门针对特定的调用而构建的。
让我添加更多细节。
在我的应用程序中,我也有一个spring-framework上下文。 考虑到这一点,我有一个org.springframework.web.servlet.DispatcherServlet映射到一个网址模式,如“* .srv”(来自服务的srv),并处理一些http调用,如“开始”,“停止”,“状态” ,所有这些操作都与我的作业调度程序有关。

我的问题是“如何调用其中一种方法(例如:http://localhost:8080/myApp/start.srv部署后?”。
经过一番研究,我发现tomcat最后部署的元素是http上下文,所以如果我尝试配置一个servlet init方法通过http调用来调用服务,http应该由尚未部署的应用程序提供,我得到一个404(这是逻辑,因为最后部署了http上下文,并且无法进行http调用)。

阅读完之后,我又沿着另一条道路(到了解决方法),我从这里得到了一些帮助

http://sujitpal.blogspot.ro/2007/03/accessing-spring-beans-from-legacy-code.html

我已经加入了处理“start”,“stop”和“status”请求的bean(在正常条件下只能通过http调用调用的bean)。

但是,这个问题仍然存在。我仍然想知道它是否是一种配置tomcat以在部署过程之后运行某些东西的方法。

如果我不够清楚,请告诉我。

祝你有个美好的一天 安德烈