2014-10-08 25 views
2

我們處於使用Jetty-Felix HTTP服務器的OSGI環境中。將來自Jersey Filter服務的自定義數據傳遞至Jersey端點服務

我們有一個實現Jersey Filter服務的包。

另一個bundle實現了一個Jersey終點類。

在過濾器中,我們使用ContainerRequestContext.setProperty()設置了一些自定義屬性。

我的問題是如何從終點方法訪問這些屬性?

@Context似乎沒有給我任何我們可以找回的屬性。

感謝

+0

您可以使用請求屬性嗎?他們的目的之一是在過濾器和servlet之間傳遞屬性。我必須有辦法從Jetty過濾器和端點訪問ServletRequest。 – 2014-10-09 06:29:57

回答

1

實際上,在過濾器中,我們使用ContainerRequestContext.setProperty(鍵,值);在終點,我們可以通過value = HttpServletRequest.getAttribute(key)來檢索它。

然後,我遇到的問題是,我試圖注入@Context作爲類實例。但是因爲它是按照請求,所以應該將其作爲函數參數注入,如下所示:

@GET 
@Path("/something") 
@Produces({MediaType.APPLICATION_JSON}) 
public AClass getSomething(@Context HttpServletRequest servletRequest) { 
    // Retrieve my thing from the filter 
    MyThing thing = (MyThing)servletRequest.getAttribute("the-key-to-my-thing"); 

    return new AClass(mything); 
}