2012-02-29 28 views

回答

22

你可以添加@Context HttpServletRequest request作爲參數傳遞給您的請求處理方法。然後獲取客戶端IP的保持與request.getRemoteAddr()

+0

很酷!感謝您的快速反應,像魅力一樣工作。 – user1226230 2012-02-29 14:06:54

+1

RemoteUser對我而言爲空,但RemoteHost和RemoteAddr按計劃工作 – bobtheowl2 2012-09-05 19:27:16

+0

我嘗試瞭解決方案,但得到「類型不匹配:無法從上下文轉換爲註釋」。我該如何解決它? – Greenhand 2013-10-19 05:42:33

2

如果您在使用灰熊 - 新澤西組合,那是做的方式:

@Context 
private java.lang.ThreadLocal<org.glassfish.grizzly.http.server.Request> grizzlyRequest; 
0

選項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