2014-09-11 48 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在部署過程後運行某些東西的方法。

如果我不夠清楚,請告訴我。

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