You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Paulo Silveira <pa...@gmail.com> on 2010/08/31 01:06:55 UTC

AsyncContext best usage in Tomcat

Hello

I would like to know the best way to broadcast a message for many
clients. Should I use a executor from a thread pool and dispatch the
message to each context.getResponse in a different thread like this:

for (final AsyncContext ctx : clients) {
	executors.execute(new Runnable() {
		public void run() {
			try {
				PrintWriter writer = ctx.getResponse().getWriter();
				writer
						.println(message);
				writer.flush();
			} catch (IOException e) {
				e.printStackTrace();
			}	
		}

	});
}

Or the best way would be to send the message to each ctx.getResponse()
inside the same thread (putting the foreach inside the Runnable)? The
question is: is ctx.getResponse().print really fast that it only puts
the String inside the buffer that will be dispatched later (in an
async fashion) to the client?

Even more, is ctx.getResponse().getWriter().print() a thread safe
call? If there are two broadcasts, what happens if we have a
concurrent call to the writer.print()? can the buffer loose data or
both calls will succeed without guaranting the order.

thanks

--
Paulo Silveira
Caelum | Ensino e Inovação
www.caelum.com.br
www.arquiteturajava.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org