首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让servlet响应多个请求?

如何让servlet响应多个请求?
EN

Stack Overflow用户
提问于 2013-03-20 15:06:06
回答 2查看 707关注 0票数 1

我有一个要包装在servlet中的任务,以提供通过http请求远程运行该任务的能力。

我知道我可以使用REST API来实现这一点,但目前我假设(如果我错了,请纠正我)一个简单的servlet就可以了。

我想要实现的一件事是,如果向servlet发出了一个请求,而另一个请求仍在处理中,我会得到一个适当的响应--“任务已经在运行”。

我使用servlet-3.0构建了一个简单的servlet,它调用我想要运行的jar,但是当我发出两个请求时,直到第一个请求完成才会处理第二个请求。

编辑:

我的servlet是一个简单的http serlvet。服务方法被重写。我在开头有一个system.out.println("a")。当我在调试模式下调用servlet,然后(在断点处停止时)再次调用它时,消息只打印一次,并在释放断点和第一次运行结束时打印第二次。

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 15:15:45

首先,这看起来一点也不像休息。如果你真的只想产生一个(单一的)后台任务,请确保你是在一个单独的工作线程中完成的,而不是请求线程。

票数 0
EN

Stack Overflow用户

发布于 2013-03-20 15:17:30

也许你需要一个锁:

代码语言:javascript
复制
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;
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15517329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档