【发布时间】:2014-09-11 11:59:49
【问题描述】:
我有一个应用程序,它被打包到一个战争中,然后部署在 TomEE 中。 我们都对此感到满意。
但是,在这个应用程序中,我有一个服务,而不是一个 Web 服务,它只是一个不给出任何响应的 servlet,只是为了做一些事情,比如启动一个作业调度程序。目前,我通过一个 ant 任务启动此作业调度程序,该任务调用一个调用该服务的类。
我担心什么?
我想在我的应用程序部署完成后立即启动这个作业调度程序,小心,不是在部署时,而是在部署之后,因为如果是在部署过程中,猜猜是什么,我想要调用尚未部署的东西,瞧,致命的 404。
我尝试了什么?
- TomEE/Tomcat 上下文监听器 - 这些在部署过程中执行;
- 带有 load-on-startup 标记的 Servlet 实现,而且我确信我的 servlet 是最后一个执行的 servlet - 这些也在部署过程中执行;
- 上面介绍的方法,但有一些内部线程,我试图让 TomEE 完成他的部署过程,但这些内部线程似乎也让 TomEE 进入睡眠状态。
所以,如果您能帮助我提出如何在部署应用程序后开始某事的建议,我将非常感谢您。
谢谢你,
安德烈
【问题讨论】:
-
当你得到“404”时,不清楚你在做什么。您是否在启动时在服务器上运行某个充当客户端并调用另一个 Servlet 的东西?
-
@SiKelly 实际上,您提到的那两个部分(客户端和“另一个 Servlet”)在同一个应用程序中,我想部署它。在这个应用程序中,我有一堆 servlet,其中一个是为仅响应特定的 http 调用而构建的。我想要一个允许我执行 servlet init 方法(或类似的方法)并在此方法中调用该特定 http 链接的解决方案。但是这个调用必须在部署完成后才能完成,因为如果不是这样,响应该特定链接的 servlet 也不可用。
-
这更没有意义!如果将进行调用的 Servlet 和将处理它的 Servlet 在同一个应用程序中 - 为什么要进行 HTTP 调用?为什么不只是一个简单的方法调用?
-
好的,问题通过方法调用完全解决了,你是对的。但正如我在下一篇文章末尾所写的那样,找到一种在 TomEE/Tomcat 上完成应用程序部署后可以执行操作的方法可能会非常有趣。
标签: java tomcat servlets deployment apache-tomee