2011-01-07 60 views
3

假设我们有一个Web服务请求,我们甚至不希望有回应尊称:如何选择不响应Java 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服务请求最好的技术?

回答

3

为什么什么都不返回?这只会迫使你的连接保持打开状态,直到超时,浪费你的服务器时间和用户的时间。我不知道在Java web服务中这是多么容易,但是你可以返回202(“接受”但处理不完整,稍后可能会被拒绝)或204(“无响应”) ?

+0

谢谢+1,并接受。基本思想是以编程方式模拟断开连接。 204听起来最清洁,我会看到如果这符合要求。 – 2011-01-09 04:16:05

+0

噢,如果你想断开连接,你可能试着关闭socket? (我对Java Web服务一无所知,但如果你有权访问底层的`Socket`类,那么你可以尝试自己关闭它) – 2011-01-09 18:17:56

1

我觉得可以在这里想到的几个选择:

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

} else { 
    return ""; 
} 

或者抛出一个异常:

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

或者尝试一些延迟战术#1或#2:

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

此处的HTTP代码403-Forbidden可能适合作为第四个选项。