0

我有一个简单的 java web 服务。我想让 Web 服务被线程化,每个对 Web 方法的调用都有自己的线程来进行处理。处理需要很长时间,我不希望它阻塞,防止发生对 web 方法的其他调用。相反,我希望 web 方法只创建线程,并让线程本身在完成处理后向客户端响应/返回一个值。那可能吗?

编辑:

这是我现在拥有的半伪代码:

@WebService(endpointInterface="Service")
public class ServiceImpl {

    public ServiceImpl() 
    {
        // Initialization
    }

    public String GetResult(input)
    {
        // Does long processing

        return Result;
    }
}

我想要做的是而不是 GetResult() 进行长时间处理,我希望它只生成 Runnable 将进行长时间处理并让 GetResult() 返回并准备好为另一个请求提供服务。我还希望 Runnable 响应等待的客户端。

编辑2:

我才意识到我在问一个愚蠢的问题。我对实施 WS 还很陌生。我原以为 WS 按顺序一次只接受一个请求。我不知道每个请求都已经自动线程化。

4

1 回答 1

2

是的,您可以使用 JMS 进行异步调用。这是最好的方法。

你也可以启动一个线程,并自己管理它们。一般不建议这样做。线程池的良好管理以及跟踪哪些线程可能需要很长时间需要大量的开销代码。

于 2012-05-03T22:30:40.340 回答