You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2006/05/19 02:44:05 UTC
svn commit: r407671 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina:
CometProcessor.java connector/CoyoteAdapter.java servlets/CometServlet.java
Author: remm
Date: Thu May 18 17:44:04 2006
New Revision: 407671
URL: http://svn.apache.org/viewvc?rev=407671&view=rev
Log:
- Add example read method.
- Return value for read errors (as an option compared with throwing an exception).
- Add some javadocs.
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java?rev=407671&r1=407670&r2=407671&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java Thu May 18 17:44:04 2006
@@ -30,8 +30,10 @@
* of the processing of the connection. It can be used to initialize any relevant
* fields using the request and response objects.
*
- * @param request
- * @param response
+ * @param request The HTTP servlet request instance, which can be accessed
+ * asynchronously at any time until the end or error methods are called
+ * @param response The HTTP servlet response instance, which can be accessed
+ * asynchronously at any time until the end or error methods are called
* @throws IOException
* @throws ServletException
*/
@@ -40,7 +42,9 @@
/**
* End may be called to end the processing of the request. Fields that have
- * been initialized in the begin method should be reset.
+ * been initialized in the begin method should be reset. After this method has
+ * been called, the request and response objects, as well as all their dependent
+ * objects will be recycled and used to process other requests.
*
* @param request
* @param response
@@ -53,7 +57,9 @@
/**
* Error will be called by the container in the case where an IO exception
* or a similar unrecoverable error occurs on the connection. Fields that have
- * been initialized in the begin method should be reset.
+ * been initialized in the begin method should be reset. After this method has
+ * been called, the request and response objects, as well as all their dependent
+ * objects will be recycled and used to process other requests.
*
* @param request
* @param response
@@ -68,14 +74,19 @@
* without blocking. 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, and can make one additional read
- * without blocking.
+ * without blocking. When encountering a read error or an EOF, the servlet MUST
+ * report it by either returning null or throwing an exception such as an
+ * IOException.
*
* @param request
* @param response
- * @throws IOException
+ * @throws IOException An IOException may be thrown to indicate an IO error,
+ * or that the EOF has been reached on the connection
* @throws ServletException
+ * @return false if the read attempt returned an EOF; alternately, it is also
+ * valid to throw an IOException
*/
- public void read(HttpServletRequest request, HttpServletResponse response)
+ public boolean read(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException;
}
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=407671&r1=407670&r2=407671&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Thu May 18 17:44:04 2006
@@ -128,7 +128,15 @@
if (error) {
servlet.error(request.getRequest(), response.getResponse());
} else {
- servlet.read(request.getRequest(), response.getResponse());
+ if (!servlet.read(request.getRequest(), response.getResponse())) {
+ error = true;
+ request.removeAttribute("org.apache.tomcat.comet");
+ try {
+ servlet.error(request.getRequest(), response.getResponse());
+ } catch (Throwable th) {
+ log.error(sm.getString("coyoteAdapter.service"), th);
+ }
+ }
}
return (!error);
} catch (Throwable t) {
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java?rev=407671&r1=407670&r2=407671&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java Thu May 18 17:44:04 2006
@@ -19,6 +19,7 @@
import java.io.IOException;
+import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -49,8 +50,20 @@
end(request, response);
}
- public abstract void read(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException;
+ public boolean read(HttpServletRequest request, HttpServletResponse response)
+ throws IOException, ServletException {
+ InputStream is = request.getInputStream();
+ byte[] buf = new byte[512];
+ do {
+ int n = is.read(buf);
+ if (n > 0) {
+ // Do something with the data
+ } else if (n < 0) {
+ return false;
+ }
+ } while (is.available() > 0);
+ return true;
+ }
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org