我有一个简单的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()进行长时间处理,我希望它仅生成将执行长时间处理并具有GetResult()返回值并准备服务另一个请求的Runnable。我还希望Runnable响应等待的客户端。

编辑2:

我只是意识到我在问一个愚蠢的问题。我刚开始实施WS。我以为WS一次只能顺序接收一个请求。我不知道每个请求都已经自动线程化。

最佳答案

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

您还可以启动一个线程,然后自己进行管理。通常不建议这样做。良好地管理线程池,以及跟踪可能需要很长时间的线程,需要大量开销代码。

10-04 10:19