[英]How to make a servlet to only handle requests from a particular website?
[英]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.