2011-01-07 61 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可能適合作爲第四個選項。