如何选择不响应Java Web服务中的请求?
假设我们有一个Web服务请求,我们甚至不想用响应来美化它:如何选择不响应Java Web服务中的请求?,java,web-services,http,jax-ws,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 {
@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服务请求的最佳技术是什么?为什么不返回任何内容?这只会迫使您的连接保持打开状态,直到超时为止,从而浪费服务器和用户的时间
我不知道在Java web服务中这样做有多容易,但您能返回202(“已接受”但处理未完成,稍后可能会被无声拒绝)或204(“无响应”)吗?我想您可以在这里想出一些选择: 返回无用的响应(例如空字符串): 或引发异常:
} else {
throw new Exception("whatevah....");
}
或者尝试一些拖延战术,然后是#1或#2:
此外,禁止使用HTTP代码403作为第四个选项在这里可能是合适的。谢谢,+1,并接受。基本思想是以编程方式模拟断开连接。204对我来说是最干净的,我会看看这是否符合要求。哦,如果你想断开连接,你可以试着关闭插座吗?(同样,我对Java web服务一无所知,但如果您能够访问底层的
Socket
类,您可以自己尝试关闭它。)是的,我想这就是重点——我认为,在处理Java web服务时,这些东西大部分都是从我这里抽象出来的。我希望这里有捷径。我想做的正是,告诉底层套接字挂断。+1,我现在实际上在使用延迟。缺点是客户端必须有一个已知的超时。
} else {
throw new Exception("whatevah....");
}
} else {
Thread.sleep(90000); // 90 seconds!
return "";
}