2012-04-26 42 views
3

@Context HttpHeaders應該在Interceptor內工作嗎?我可以使用攔截器在JAX-RS應用程序中檢查http標頭嗎?

我創建了一個RestfulClasses類,它擴展了javax.ws.rs.core.Application並註釋了它@javax.ws.rs.ApplicationPath("/api") - 所有漂亮的標準東西。

我也有一個類,添加到處理特定的路徑,它本身工作正常。麻煩的是我想檢查傳入的HTTP標題,並且使用攔截器聽起來很完美。

我的攔截器類聲明瞭@Context HttpHeaders httpHeaders,但在@AroundInvoke方法中,此屬性爲null。

我應該期待這個工作還是我錯過了什麼?有另一種方法嗎?

+1

爲什麼你不會只添加一個Servlet過濾器? [http://www.oracle.com/technetwork/java/filters-137243.html](http://www.oracle.com/technetwork/java/filters-137243.html)它可以做同樣的事情,是一個更標準的方法。 – 2012-04-27 08:47:59

回答

0

我發現使用攔截器的方式:延長有成員的基類:

@Context protected HttpHeaders headers; 

這檢查頭的任何方法被調用之前@AroundInvoke方法。雖然它並不完美。

阿爾喬姆的解決方案也可以,但我是新來的平臺,並沒有遇到過servlet過濾器。雖然我仍然喜歡對web.xml標記進行註釋,但它更優雅...

+0

如果註釋是唯一的掛斷,請參閱[Servlet 3.0的註釋](http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/package-summary.html)。他們讓你[無需任何XML設置](https://blogs.oracle.com/swchan/entry/servlet_3_0_annotations)。 – 2012-04-27 14:21:22

+0

Yep理解 - 我剛剛創建了一個過濾器來執行我想要的操作(非常容易),並且我即將跳過來閱讀自servlet v3以來的註釋。非常感謝您的幫助! – jmkgreen 2012-04-27 14:33:13

相關問題