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/26 18:39:09 UTC

svn commit: r409696 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina: connector/CoyoteAdapter.java servlets/CometServlet.java

Author: remm
Date: Fri May 26 09:39:08 2006
New Revision: 409696

URL: http://svn.apache.org/viewvc?rev=409696&view=rev
Log:
- Some small comet fixes.

Modified:
    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/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=409696&r1=409695&r2=409696&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 Fri May 26 09:39:08 2006
@@ -116,12 +116,22 @@
         Response response = (Response) res.getNote(ADAPTER_NOTES);
 
         if (request.getWrapper() != null) {
+            
+            // Bind the context CL to the current thread
+            if (request.getContext().getLoader() != null ) {
+                Thread.currentThread().setContextClassLoader
+                        (request.getContext().getLoader().getClassLoader());
+            }
+            
             CometProcessor servlet = null;
             try {
                 servlet = (CometProcessor) request.getWrapper().allocate();
             } catch (Throwable t) {
                 log.error(sm.getString("coyoteAdapter.service"), t);
                 request.removeAttribute("org.apache.tomcat.comet");
+                // Restore the context classloader
+                Thread.currentThread().setContextClassLoader
+                    (CoyoteAdapter.class.getClassLoader());
                 return false;
             }
             try {
@@ -156,6 +166,9 @@
                     request.recycle();
                     response.recycle();
                 }
+                // Restore the context classloader
+                Thread.currentThread().setContextClassLoader
+                    (CoyoteAdapter.class.getClassLoader());
             }
         }
         return true;

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=409696&r1=409695&r2=409696&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 Fri May 26 09:39:08 2006
@@ -71,12 +71,20 @@
         if (request.getAttribute("org.apache.tomcat.comet.support") == Boolean.TRUE) {
             begin(request, response);
         } else {
-            // FIXME: Implement without comet support
+            // No Comet support: regular servlet handling
             begin(request, response);
-            
-            // Loop reading data
-            
-            end(request, response);
+            boolean error = true;
+            try {
+                // Loop reading data
+                while (read(request, response));
+                error = false;
+            } finally {
+                if (error) {
+                    error(request, response);
+                } else {
+                    end(request, response);
+                }
+            }
         }
         
     }



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