tomcat的comet事件解释

tomcat有一个异步处理request和response的机制(long polling),是通过事件来完成的。以下是主要四个事件的解释:

Enumeration describing the major events that the container can invoke the CometProcessors event() method with
BEGIN - will be called at the beginning of the processing of the connection.
在连接开始处理的时候被调用。
It can be used to initialize any relevant fields using the request and response objects.
可以在这里初始化所有request和respone必要的字段。
Between the end of the processing of this event, and the beginning of the processing of the end or error events, it is possible to use the response object to write data on the open connection.
在begin事件结束后和end或error事件开始前, 可以使用response对象写数据到打开的连接上。
Note that the response object and depedent OutputStream and Writer are still not synchronized, so when they are accessed by multiple threads, synchronization is mandatory.
注意response对象和关联的outputStream和Writer是处于不同状态,因此当他们被多线程访问时,同步是强制性的。
After processing the initial event, the request is considered to be committed.
在处理完初始化时间后,这个request算是被认为完成提交。

READ - This indicates that input data is available, and that one read can be made without blocking.
Read事件指示了输入数据是可用的,并且读取操作是非阻塞的。
The available and ready methods of the InputStream or Reader may be used to determine if there is a risk of blocking: the servlet should read while data is reported available.
InputStream或Reader的available和ready方法可以被用于确定这样的阻塞风险: servlet应该读取被报告可用的数据。
When encountering a read error, the servlet should report it by propagating the exception properly.
当遇到一个读取错误时, servlet应该通过异常来报告它。
Throwing an exception will cause the error event to be invoked, and the connection will be closed.
抛出一个异常将导致错误事件被调用,并且连接会被关闭。
Alternately, it is also possible to catch any exception, perform clean up on any data structure the servlet may be using, and using the close method of the event.
因此,它必须抓住所有异常,并清理servlet可能正在使用的数据结构, 调用事件的close方法。
It is not allowed to attempt reading data from the request object outside of the execution of this method.
不允许尝试从request对象读取数据在这个方法的执行体外。


END - End may be called to end the processing of the request.
End事件在request处理结束时会被调用。
Fields that have been initialized in the begin method should be reset.
那些在Begin段被初始化的字段应该被重置。
After this event has been processed, the request and response objects, as well as all their dependent objects will be recycled and used to process other requests.
在这个事件处理完后,所有的request和response对象和它们相关联的对象将会被回收并用于处理其他的请求。
End will also be called when data is available and the end of file is reached on the request input (this usually indicates the client has pipelined a request).
End标志也会被设置当数据可用时并且对request的输入流的读取已经到了文件尾(通常是指客户端管道化了一个请求)。

ERROR - Error will be called by the container in the case where an IO exception or a similar unrecoverable error occurs on the connection.
Error事件将会被调用当容器遇到了连接的IO异常或是类似的错误。
Fields that have been initialized in the begin method should be reset.
那些在Begin段被初始化的字段应该被重置。
After this event has been processed, the request and response objects, as well as all their dependent objects will be recycled and used to process other requests.
在这个事件处理完后,所有的request和response对象和它们相关联的对象将会被回收并用于处理其他的请求。

posted @ 2011-06-20 08:24  moonz-wu  阅读(1546)  评论(0编辑  收藏  举报