簡體   English   中英

如何使Servlet響應多個請求?

[英]How to make a servlet respond to multiple requests?

我有一個要封裝在servlet中的任務,以提供通過http請求遠程運行任務的功能。

我知道我可以使用REST API來實現,但是目前我假設(如果我輸入錯了,請更正)簡單的servlet可以做到。

我要實現的目的之一是,如果在仍處理另一個請求的同時向Servlet發出請求,我將得到一個適當的響應-“任務已在運行”。

我使用servlet-3.0構建了一個簡單的servlet,它調用了我要運行的jar,但是當我發出2個請求時,直到第一個請求完成,才會處理第二個請求。

編輯:

我的servlet是一個簡單的http serlvet。 服務方法已被覆蓋。 我開始時有一個system.out.println(“ a”)。 當我在調試模式下調用servlet,然后(在斷點處停止時)再次調用它時,在釋放斷點並第一次運行完成時,消息僅打印一次,並第二次打印。

首先,這似乎根本不是REST。 如果您真的只想產生一個(單個)后台任務,請確保在單獨的工作線程中而不是在請求線程中進行。

也許您需要一把鎖:

public class Task extends HttpServlet {
    // for singleton
    //private volatile boolean running = false;

    // or try this:

    public static boolean running = false;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
    {
        if(running){
             PrintWriter out = response.getWriter();
             out.println("running");
             return;
        }
        synchronized(Task.class){
            if(!running){
                running = true;
                // run the task
                running = false;
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM