1

次のSpring MVC 3.2コードがあります( DeferredResultクラスを使用しています):

@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 呼び出しによって継続的にポーリングされ、9 回目のメソッド呼び出しで Tomcat が体系的にクラッシュします。Tomcat はエラー メッセージなしでクラッシュすることに注意してください。

アプリ/Tomcat をデバッグする方法に関するヒントを提供して、このコードがこの動作を示す理由を特定するのを誰かが手伝ってくれれば、とても感謝しています。

4

1 に答える 1