2014-09-11 49 views
0

我有一个应用程序,它打包成战争,然后部署在TomEE中。 我们都对此感到满意。TomEE/Tomcat - 在部署后运行某些东西

但是,在这个应用程序,我有一个服务,而不是一个Web服务,只是它不给任何回应一个servlet,只是有目的做一些事情,比如开始工作调度。目前,我通过一个ant任务来启动这个作业调度器,该任务调用一个类来调用该服务。

我的担心是什么?

我要开始这个工作调度之后我的应用程序的部署完成后,要小心,而不是在部署后的部署,但,因为如果是在部署过程中,你猜怎么着,我想打电话给该ISN东西目前还没有部署,并且voila,致命404.

我试过了什么?

  • TomEE/Tomcat上下文监听器 - 这些在部署过程中执行;
  • 的Servlet实现与时加载的启动标签,也是我确信我的servlet是最后执行的servlet - 在部署过程中,这些也被执行;
  • 的方法来呈现以上,但与我试图把睡眠为了让TomEE完成他的部署过程中的一些内螺纹,但目前看来,这些内螺纹把TomEE睡眠过多。

所以,如果你能帮助我一个建议,在部署应用程序后如何启动一些东西,我会非常感激你。

谢谢
安德烈

+0

目前尚不清楚你在做什么,当你得到“404”。你是否在启动时在服务器上运行一些东西,它充当客户端并调用另一个Servlet? – 2014-09-11 14:50:36

+0

@SiKelly其实,你提到的那两个部分(客户端和'另一个Servlet')在同一个应用程序中,我想部署它。在这个应用程序中,我有一堆servlet,其中一个构建为仅响应特定的http调用。我想要一个解决方案,它允许我执行servlet init方法(或类似的东西),并在此方法中调用该特定的http链接。但是这个调用只有在完成部署后才能完成,因为如果不是,那么响应该特定链接的servlet也不可用。 – 2014-09-11 18:41:42

+0

这使得更少的意义!如果将进行调用的Servlet和将处理它的Servlet位于同一个应用程序中 - 为什么要进行HTTP调用?为什么不只是一个简单的方法调用? – 2014-09-15 17:43:56

回答

0

就目前而言,我会描述一下我为了解决我的问题已经做了,但仅仅是一个解决办法,在我看来。

正如我在第一篇文章说,我有一大堆的servlet,其中之一是建立在行为只是在一个特定的电话。
让我添加更多细节。
在我的应用程序中,我也有一个spring-framework上下文。 考虑到这一点,我这是在像“* srv的相关”(SRV来自服务)的URL模式映射到一个org.springframework.web.servlet.DispatcherServlet,并处理一些HTTP调用,如“开始”,“停止”,“状态”,所有这些操作与我的作业调度程序有关。

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

读取后,我跟着(一个解决方法)另一条路径,我已经得到从这里

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

一些帮助,我已经accesed其处理“开始”豆, “停止”和“状态”请求(在正常情况下只通过http调用调用的bean)。

但是,这个问题仍然是打开的。不过我想知道这是否是配置tomcat在部署过程后运行某些东西的方法。

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

有一个愉快的一天,
安德烈