我有一個REST-服務器在這裏使用JERSEY。我必須記錄呼叫客戶端的IP(更好的DNS)。JERSEY:如何使用注入註釋檢索調用IP或URI?
有人可以指出注射註釋使用的方向嗎?
已搜索「@Context」,但找不到合適的東西。
感謝 格爾德
我有一個REST-服務器在這裏使用JERSEY。我必須記錄呼叫客戶端的IP(更好的DNS)。JERSEY:如何使用注入註釋檢索調用IP或URI?
有人可以指出注射註釋使用的方向嗎?
已搜索「@Context」,但找不到合適的東西。
感謝 格爾德
你可以添加@Context HttpServletRequest request
作爲參數傳遞給您的請求處理方法。然後獲取客戶端IP的保持與request.getRemoteAddr()
如果您在使用灰熊 - 新澤西組合,那是做的方式:
@Context
private java.lang.ThreadLocal<org.glassfish.grizzly.http.server.Request> grizzlyRequest;
選項2的灰熊,澤西組合。在類的(ContainerRequestFilter的擴展在我的情況)聲明 廣場
@Inject
private javax.inject.Provider<org.glassfish.grizzly.http.server.Request> request;
,並在後面的代碼中使用此。
request.get().getRemoteAddr()
我挖了,我找到了resolution in the jersey's jira。 注意,他們建議使用@Inject代替@Context
我試着使用
@Context
private HttpServletRequest servletRequest;
被廣泛推薦
不過的servletRequest總是空。
*註釋servletRequest爲空,因爲我使用GrizzlyHttpServerFactory創建HttpServer。如果你想有servletRequest,那麼你需要用WebappContext來部署它。 Take a look here for details
很酷!感謝您的快速反應,像魅力一樣工作。 – user1226230 2012-02-29 14:06:54
RemoteUser對我而言爲空,但RemoteHost和RemoteAddr按計劃工作 – bobtheowl2 2012-09-05 19:27:16
我嘗試瞭解決方案,但得到「類型不匹配:無法從上下文轉換爲註釋」。我該如何解決它? – Greenhand 2013-10-19 05:42:33