【发布时间】:2013-03-11 13:26:27
【问题描述】:
我有以下 Spring MVC 3.2 代码(它使用 DeferredResult class):
@RequestMapping(value = "getMessages", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public DeferredResult<List<Message>> getMessages(@RequestParam final Long senderId) {
final Long recipientId = memberService.retrieveCurrentMember().getId();
final String messageRequestKey = new StringBuilder().append(senderId).append(":").append(recipientId).toString();
final DeferredResult<List<Message>> deferredResult = new DeferredResult<List<Message>>(null, Collections.emptyList());
messageRequests.put(messageRequestKey, deferredResult);
deferredResult.onCompletion(new Runnable() {
@Override
public void run() {
messageRequests.remove(messageRequestKey);
}
});
List<Message> unReadMessages = messageService.findUnreadMessages(senderId, recipientId);
if (!unReadMessages.isEmpty()) {
deferredResult.setResult(unReadMessages);
}
return deferredResult;
}
此方法由 ajax 调用连续轮询,它系统地导致 Tomcat 在第 9 次方法调用时崩溃。请注意,Tomcat 崩溃时没有任何错误消息。
如果有人能帮助我确定这段代码出现这种行为的原因,我将不胜感激,或许可以给我有关如何调试应用程序/tomcat 的提示。
【问题讨论】:
-
这对您来说仍然是个问题吗?如果是,您能否提供更多代码(例如,与 messageService 和 messageRequests 相关的代码)?
-
嗨,文丹。是的,这对我来说仍然是个问题。我在 springsource 论坛上打开了一个帖子:here 带有一个示例应用程序。如果我能提供更多信息,请告诉我。
标签: tomcat servlets spring-mvc asynchronous