Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 65393 invoked from network); 6 Aug 2009 16:10:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 6 Aug 2009 16:10:58 -0000 Received: (qmail 91473 invoked by uid 500); 6 Aug 2009 16:11:04 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 91386 invoked by uid 500); 6 Aug 2009 16:11:04 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 91375 invoked by uid 99); 6 Aug 2009 16:11:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Aug 2009 16:11:04 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Aug 2009 16:10:55 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 375A923888ED; Thu, 6 Aug 2009 16:10:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r801693 - in /tomcat/trunk: java/org/apache/catalina/connector/ java/org/apache/coyote/http11/ webapps/examples/WEB-INF/ webapps/examples/WEB-INF/classes/async/ webapps/examples/jsp/async/ Date: Thu, 06 Aug 2009 16:10:34 -0000 To: dev@tomcat.apache.org From: fhanik@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090806161035.375A923888ED@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: fhanik Date: Thu Aug 6 16:10:34 2009 New Revision: 801693 URL: http://svn.apache.org/viewvc?rev=801693&view=rev Log: Another use case Added: tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java (with props) Modified: tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/trunk/webapps/examples/WEB-INF/web.xml tomcat/trunk/webapps/examples/jsp/async/index.jsp Modified: tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java?rev=801693&r1=801692&r2=801693&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java Thu Aug 6 16:10:34 2009 @@ -257,6 +257,8 @@ dispatch = null; } } + } else if (this.state.get()==AsyncState.COMPLETING) { + doInternalComplete(false); } else { throw new IllegalStateException("Dispatch illegal. Invalid state: "+state.get()); } Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=801693&r1=801692&r2=801693&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Thu Aug 6 16:10:34 2009 @@ -273,6 +273,12 @@ //configure settings for timed out asyncConImpl.setState(AsyncContextImpl.AsyncState.TIMING_OUT); } + if (status==SocketStatus.TIMEOUT) { + AsyncContextImpl asyncConImpl = (AsyncContextImpl)request.getAsyncContext(); + //TODO SERVLET3 - async + //configure settings for timed out + asyncConImpl.setState(AsyncContextImpl.AsyncState.TIMING_OUT); + } connector.getContainer().getPipeline().getFirst().invoke(request, response); }catch (RuntimeException x) { success = false; Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=801693&r1=801692&r2=801693&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Thu Aug 6 16:10:34 2009 @@ -190,13 +190,6 @@ * Async used */ protected boolean async = false; - /** - * Closed flag, a Comet async thread can - * signal for this Nio processor to be closed and recycled instead - * of waiting for a timeout. - * Closed by HttpServletRequest.getAsyncContext().complete() - */ - protected boolean asyncClose; /** * Content delimitator for the request (if false, the connection will @@ -1135,7 +1128,6 @@ comet = false; cometClose = true; async = false; - asyncClose = false; SelectionKey key = socket.getIOChannel().keyFor(socket.getPoller().getSelector()); if ( key != null ) { NioEndpoint.KeyAttachment attach = (NioEndpoint.KeyAttachment) key.attachment(); @@ -1316,7 +1308,6 @@ } else if (actionCode == ActionCode.ACTION_ASYNC_COMPLETE) { //TODO SERVLET3 - async AtomicBoolean dispatch = (AtomicBoolean)param; - asyncClose = true; RequestInfo rp = request.getRequestProcessor(); if ( rp.getStage() != org.apache.coyote.Constants.STAGE_SERVICE ) { //async handling dispatch.set(true); Added: tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java?rev=801693&view=auto ============================================================================== --- tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java (added) +++ tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java Thu Aug 6 16:10:34 2009 @@ -0,0 +1,62 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package async; + +import java.io.IOException; + +import javax.servlet.AsyncContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.juli.logging.Log; +import org.apache.juli.logging.LogFactory; + +public class Async2 extends HttpServlet { + protected static Log log = LogFactory.getLog(Async2.class); + public Async2() { + } + + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + final AsyncContext actx = req.startAsync(); + actx.setAsyncTimeout(30*1000); + Runnable run = new Runnable() { + public void run() { + try { + Thread.currentThread().setName("Async2-Thread"); + log.info("Putting AsyncThread to sleep"); + Thread.sleep(10*1000); + log.info("Writing data."); + actx.getResponse().getWriter().write("Output from background thread. Time:"+System.currentTimeMillis()+"\n"); + actx.complete(); + }catch (InterruptedException x) { + log.error("Async2",x); + }catch (IllegalStateException x) { + log.error("Async2",x); + }catch (IOException x) { + log.error("Async2",x); + } + } + }; + Thread t = new Thread(run); + t.start(); + } + + +} Propchange: tomcat/trunk/webapps/examples/WEB-INF/classes/async/Async2.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomcat/trunk/webapps/examples/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/WEB-INF/web.xml?rev=801693&r1=801692&r2=801693&view=diff ============================================================================== --- tomcat/trunk/webapps/examples/WEB-INF/web.xml (original) +++ tomcat/trunk/webapps/examples/WEB-INF/web.xml Thu Aug 6 16:10:34 2009 @@ -312,4 +312,12 @@ async1 /async/async1 + + async2 + async.Async2 + + + async2 + /async/async2 + Modified: tomcat/trunk/webapps/examples/jsp/async/index.jsp URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/jsp/async/index.jsp?rev=801693&r1=801692&r2=801693&view=diff ============================================================================== --- tomcat/trunk/webapps/examples/jsp/async/index.jsp (original) +++ tomcat/trunk/webapps/examples/jsp/async/index.jsp Thu Aug 6 16:10:34 2009 @@ -13,6 +13,12 @@ - background thread calls dispatch(/path/to/jsp) "> Async 1 +3. Simple dispatch + - servlet does startAsync() + - background thread calls writes and calls complete() + "> Async 2 + + 3. Timeout s1 - servlet does a startAsync() - servlet does a setAsyncTimeout --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org