升级Tomcat版本 apache-tomcat-7.0.77
diff --git a/tomcat-uidm/webapps/examples/jsp/async/index.jsp.html b/tomcat-uidm/webapps/examples/jsp/async/index.jsp.html
new file mode 100644
index 0000000..6f124b5
--- /dev/null
+++ b/tomcat-uidm/webapps/examples/jsp/async/index.jsp.html
@@ -0,0 +1,71 @@
+<html><body><pre>

+&lt;%--

+ 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.

+--%>

+&lt;%@page session="false"%>

+

+&lt;pre>

+Use cases:

+

+1. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls ctx.dispatch()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async0")%>"> Async 0 &lt;/a>

+

+2. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls dispatch(/path/to/jsp)

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async1")%>"> Async 1 &lt;/a>

+

+3. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls writes and calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async2")%>"> Async 2 &lt;/a>

+

+4. Simple dispatch

+ - servlet does a startAsync()

+ - servlet calls dispatch(/path/to/jsp)

+ - servlet calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async3")%>"> Async 3 &lt;/a>

+

+3. Timeout s1

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - returns - waits for timeout to happen should return error page

+

+4. Timeout s2

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - servlet does a addAsyncListener

+ - returns - waits for timeout to happen and listener invoked

+

+5. Dispatch to asyncSupported=false servlet

+ - servlet1 does a startAsync()

+ - servlet1 dispatches to dispatch(/servlet2)

+ - the container calls complete() after servlet2 is complete

+ - TODO

+

+6. Chained dispatch

+ - servlet1 does a startAsync

+ - servlet1 does a dispatch to servlet2 (asyncsupported=true)

+ - servlet2 does a dispatch to servlet3 (asyncsupported=true)

+ - servlet3 does a dispatch to servlet4 (asyncsupported=false)

+

+

+7. Stock ticker

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker &lt;/a>

+&lt;/pre>

+</pre></body></html>