2013-03-07 60 views
0

我們有一個Resteasy webservice。ResteasyJacksonProvider後Resteasy PostProcessInterceptor

我使用傑克遜提供商的JSON,在響應傳出JSON和請求中傳入JSON。

是否有可能在JSON-Jackson序列化後執行PostProcessInterceptor?

我的PostProcessInterceptor必須更改每個傳出響應的JSON內容。但是當PostProcessInterceptor被執行時,如果我打印實體response.getEntity().toString();,我會看到java.lang.Object的toString方法,而不是JSON字符串。這是因爲該對象還沒有被傑克遜序列化。

是否可以在運行PostProcessInterceptor之前使用Resteasy/Jackson 序列化之前

我也試着在我的PostProcessInterceptor上使用@Precedence註解。但它不起作用,即使使用「DECODER」優先級(這是最後一個)。

有什麼想法?提前致謝。

回答

0

我會去CDI攔截器。您可以從InvocationContext中獲取攔截的方法參數,並在必要時更改它們。

+0

我正在尋找一個攔截器,處理所有傳出的身體響應(不是傳入的請求),這是可能與CDI攔截器?我正在閱讀文檔,這是你對我的建議? http://docs.jboss.org/weld/reference/1.1.5.Final/en-US/html/interceptors.html – thermz 2013-04-12 12:49:05

+0

如果您對Resteasy序列化之前的響應對象感興趣,那麼是的。改變這一點,隨之而來的是JSON。您可以獲取context.proceed()響應Object並將其投射(yikes!)或捕獲即將發生的異常。 如果您需要在所有異常映射程序完成其作業並對實際JSON字符串進行更改之後查看最終結果,那麼您可以嘗試MessageBodyWriterInterceptor。沒有自己做過,所以這只是一個明智的猜測。 – garbelini 2013-04-12 13:48:25

+0

對,我說過「是否可以在JSON-Jackson序列化後執行PostProcessInterceptor?」所以我對響應正文中的JSON字符串感興趣,而不是對象。 所以你的建議是MessageBodyWriterInterceptor。看起來很好的解決方案,我會讓你知道! – thermz 2013-04-12 14:00:01