如何选择不响应Java Web服务中的请求?

时间:2011-01-07 17:02:09

标签: java web-services http jax-ws

假设我们有一个web服务请求,我们甚至不想用响应来表达:

@WebMethod(operationName = "doSomethingForNicePeopleOnly")
public String doSomethingForNicePeopleOnly(@WebParam(name="username") String user) {
    if (userIsNice(user)) {
      return "something nice";
    } else {
      // I'd prefer not to return anything at all, not even a 404...
    }
}

不响应给定的Java Web服务请求的最佳技术是什么?

2 个答案:

答案 0 :(得分:3)

为什么一无所获?这只会迫使您的连接保持打开状态,直到它超时,从而浪费服务器的时间和用户的时间。

我不知道在Java Web服务中这是多么容易,但是你可以返回202(“接受”但处理不完整,以后可能会被静默拒绝)或204(“无响应”)吗?

答案 1 :(得分:1)

我认为可以在这里考虑几个选择:

返回无用的响应(例如空字符串):

} else {
  return "";
}

或抛出异常:

} else {
  throw new Exception("whatevah....");
}

或尝试一些延迟策略,然后是#1或#2:

} else {
  Thread.sleep(90000);  // 90 seconds!
  return "";
}

此处,HTTP代码403-Forbidden可能适合作为第4选项。