【发布时间】:2012-05-03 21:48:22
【问题描述】:
我有一个简单的 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 按顺序一次只接受一个请求。我不知道每个请求都已经自动线程化了。
【问题讨论】:
-
有可能。你试过什么。你做了什么搜索。你看过什么代码?请编辑您的问题并提供更多详细信息。
-
你有什么样的客户?服务器端?命令行/批处理?图形用户界面?摇摆? JavaFX?
-
看起来你真的要求 WS 是异步的......这也是可能的。
-
@vkraemer 是的,这就是我想要的。你如何让 WS 异步运行,这样它就不会停留在一个方法调用上。
-
关于编辑 2... 您需要确保您的服务代码是线程安全的,以利用自动线程化的请求。
标签: java multithreading service web