2
我有一個Spring控制器正在通過來自GAE隊列調度器的HTTP POST進行調用。NotSerializableException轉義Spring Controller並導致Google App Engine隊列出現問題隊列
@Controller
@RequestMapping(value = RSSPoller.RSS_POLLER_URL)
public class RSSPoller implements Serializable {
private static final long serialVersionUID = -4925178778477404709L;
public static final String RSS_POLLER_URL = "/rsspoller";
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public void pollAndProcessRssFeed() throws ServiceException {
try {
// do some stuff
}
catch(Exception e) {
throw new ServiceException("Can't process RSS feed because", e);
}
}
}
然而,當它被調用時,響應代碼是500的
Uncaught exception from servlet
java.lang.RuntimeException: java.io.NotSerializableException: <some spring class that changes all the time, but does not implement java.io.Serializable>
一個臨界日誌消息相同的日誌信息顯示出來在日誌用警告水平以及。
當我調用其他呈現網頁(GET)的Spring控制器或返回一些XML數據(本質上RPC調用使用HTTP POST)時,我在日誌中獲得類似的警告消息(但不是關鍵的)。當我對這些URL執行HTTP GET/POST時,響應代碼爲200,輸出正確(我忽略了日誌中的警告消息)。
這使我兩個問題:
- 爲什麼我得到了POST從隊列中嚴重錯誤消息/ HTTP 500,而不是GET/POST在我的應用程序等春季控制器?
- 如何捕獲異常並基本丟棄它;至於我的目的,這項任務已經完成。
我可以發佈完整的例外日誌,如果它是使用;爲簡潔起見,我省略了它。
我確實試圖做到這一點,但對象圖繪製太笨拙。一個人將不得不使每個類在Spring Serializable中;)我最終放棄了。 – kierans 2013-07-17 04:07:24