2010-09-02 6 views
1

J'utilise CometProcessor pour implémenter des interrogations longues sur Tomcat 7.0. La chose qui me dérange est que je n'obtiens pas d'autres événements sauf CometEvent.EventType.BEGIN. L'exemple de code:Événements de comète manquants sur Tomcat 7 CometProcessor

@Override 
    public void event(CometEvent event) throws IOException, ServletException { 

    HttpServletRequest request = event.getHttpServletRequest(); 
    HttpServletResponse response = event.getHttpServletResponse(); 
    if (event.getEventType() == CometEvent.EventType.BEGIN) { 
     LOGGER.info("Begin for session: " + request.getSession(true).getId()); 
    } else if (event.getEventType() == CometEvent.EventType.ERROR) { 
     LOGGER.error("Error for session: " + request.getSession(true).getId()); 
     event.close(); 
    } else if (event.getEventType() == CometEvent.EventType.END) { 
     LOGGER.info("End for session: " + request.getSession(true).getId()); 
     event.close(); 
    } else if (event.getEventType() == CometEvent.EventType.READ) { 
     LOGGER.info("Read from session: " + request.getSession(true).getId()); 
    } 

Je suppose que cela pourrait provoquer des fuites de mémoire parce que sur le magasin événement begin I l'objet de réponse dans mon tableau local.

Quelqu'un a-t-il une idée de ce qui pourrait se passer?

Répondre

1

Semble qu'il n'y a rien à invoquer l'extrémité de la demande, donc il va rester là jusqu'à ce qu'un délai expire. Dans mon expérience, END est déclenché lorsque vous appelez close, en dehors du contexte du thread que les appels commencent.

Questions connexes