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