第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何防止服務(wù)在 Catalina 啟動之前才啟動

如何防止服務(wù)在 Catalina 啟動之前才啟動

守著一只汪 2023-08-04 16:35:44
我有一個在 Apache Tomcat 9 上運行的 JAX-WS 客戶端。該客戶端通過進入無限循環(huán)來輪詢數(shù)據(jù),并設(shè)置為在啟動時加載的 servlet。我遇到的問題是 servlet 在 Catalina 完成啟動之前啟動并進入循環(huán)。我嘗試使用 sleep() 和 wait() 無濟于事,我嘗試實現(xiàn) org.apache.catalina.LifecycleListener 但這也不起作用。這是我的 servlet 類:@WebServlet("/MyClient")public class MyServlet extends HttpServlet {    @Override    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    @Override    public void init() throws ServletException {        System.out.println("Servlet Started");        MyClient client = new MyClient();        client.startClient();    }}這是我的民意調(diào)查課程:public class Polling {    private static final int TWO_MINUTES = 120000;    public void startPoll() throws IOException {        for (;;) {            //Do something            try {                Thread.sleep(TWO_MINUTES);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}我期望在 XXXX 毫秒內(nèi)看到 org.apache.catalina.startup.Catalina.start 服務(wù)器啟動,然后我的程序打印“Servlet Started”,但是它首先啟動 servlet,這使得 tomcat 掛起并阻止訪問其他 Web 應(yīng)用程序。
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

您不會看到服務(wù)器啟動,因為您劫持了初始化線程并開始用它進行輪詢。服務(wù)器將在您的 servlet 初始化后啟動,但它永遠不會完成初始化,因為您調(diào)用它startPoll()并且init()它永遠不會返回。

不要使用無限循環(huán)和手動 2 分鐘睡眠的手工輪詢,而是考慮調(diào)度,例如使用Quartz或至少一個ScheduledExecutorService,這是一個基于 Tomcat 的示例。


查看完整回答
反對 回復(fù) 2023-08-04
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號