使用Netbeans并编写任意REST端点时,NetBeans始终显示警告,表明该方法可以转换为异步。Java EE中应该每个REST端点都是异步的吗?
例如,我创建以下方法:
@GET
@Path("/test")
public String hello() {
return "Hello World!";
}
的NetBeans然后显示一个警告,见下文:
点击工具提示生成此代码:
private final ExecutorService executorService = java.util.concurrent.Executors.newCachedThreadPool();
@GET
@Path(value = "/test")
public void hello(@Suspended final AsyncResponse asyncResponse) {
executorService.submit(new Runnable() {
@Override
public void run() {
asyncResponse.resume(doHello());
}
});
}
private String doHello() {
return "Hello World!";
}
创建PUT时同样如此或POST方法。由于在实现REST端点时NetBeans总是显示警告,这告诉我编写同步端点被认为是错误/不正确的做法。那么,每个REST端点应该是异步的吗?为什么?
会发生什么,如果两个用户请求同时访问相同的资源? –
据我所知,服务器的线程池中有多个线程可用。每当有新的请求进入时,服务器都会将其中一个线程分配给该请求,并在处理完请求(不管访问哪个资源)后将线程释放到池中。这也意味着默认情况下JAX-RS是线程安全的。 – Jakob
什么是您的netbeans版本? – user7294900