2016-11-02 5:19 GMT+01:00 Bruce Huang <mailbru...@gmail.com>:

> Thanks for your suggestion.
>
> I have tested on 8.0.38 release, but it even can't close the comet
> properly. On 8.0.23, after OutputStream.close(), I have to do event.close()
> to make the END event to be fired correctly.
>
> ServletOutputStream servletOutputStream =
> event.getHttpServletResponse().getOutputStream();
>
> servletOutputStream.write(triggerMessage);
> servletOutputStream.flush();
> servletOutputStream.close();
>
> event.close(); // add for NIO2
>

Why is it "add for NIO2" ? When closing comet, you should use event.close()
(why do you think this API exists ?) *and* flushing+closing the streams is
often a problem. Although I understand the systematic stream close (and
flush, sometimes) comes from java.io, it is useless in Servlets and
sometimes harmful.

>
> I found that the event.close() won't work from v8.0.27~8.0.38 and I could
> make the comet to be connected start from v8.0.9 to v8.0.38, but
> event.setTimeout() are not working on both of them.
>
> Since our server is running on Windows platform, we have to switch to NIO2
> for this issue
> http://tomcat.10.x6.nabble.com/Tomcat-8-uses-high-CPU-td5049333.html
>
> What is the error(s) you get with the latest 8.0 build ?

Since Comet is removed in 8.5 (deprecated in 8.0) and NIO2 was new in 8.0,
it's not a very good combo for support of the feature, but we can give it a
shot.

Rémy

Reply via email to