craigmcc 01/06/23 12:27:24
Modified: tester/src/bin tester.xml
tester/web/WEB-INF web.xml
Added: tester/src/tester/org/apache/tester Context00.java
Context01.java Context02.java ContextBean.java
Log:
Add a set of unit tests for servlet context attributes.
NOTE: If you uncomment the clearAttributes() call in StandardContext, and
then run the "ServletContext" target in tester.xml, the application
restart will fail on ClassNotFoundException errors on the listeners and
filters.
Revision Changes Path
1.51 +52 -1 jakarta-tomcat-4.0/tester/src/bin/tester.xml
Index: tester.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/bin/tester.xml,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- tester.xml 2001/06/20 22:37:06 1.50
+++ tester.xml 2001/06/23 19:27:24 1.51
@@ -15,7 +15,7 @@
<taskdef name="tester" classname="org.apache.tester.TestClient"/>
- <target name="all"
depends="ROOT,Authentication,CaseSensitive,Decoding,ErrorPage,FilterRequest,FilterResponse,Jndi,RequestDispatcher,Resources,ServletRequest,ServletResponse,HttpSession,XercesTest,SSITest,CGITest"/>
+ <target name="all"
depends="ROOT,Authentication,CaseSensitive,Decoding,ErrorPage,FilterRequest,FilterResponse,Jndi,RequestDispatcher,Resources,ServletContext,ServletRequest,ServletResponse,HttpSession,XercesTest,SSITest,CGITest"/>
<target name="ROOT">
@@ -852,6 +852,57 @@
debug="${debug}"
request="${context.path}/Resources06?path=/WEB-INF"
outContent="Resources06 PASSED"/>
+
+ </target>
+
+
+ <target name="ServletContext">
+
+ <!-- ========== Servlet Context Attributes ============================ -->
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/Context00"
+ outContent="Context00 PASSED"/>
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/Context01"
+ outContent="Context01 PASSED"/>
+
+ <!-- NOTE: Assign role "manager" to user "tomcat" for this to work -->
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ inHeaders="Authorization:Basic dG9tY2F0OnRvbWNhdA=="
+ request="${manager.path}/reload?path=${reload.path}"
+ outContent="OK - Reloaded application at context path ${reload.path}"/>
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/Context02"
+ outContent="Context02 PASSED"/>
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/WrappedContext00"
+ outContent="Context00 PASSED"/>
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/WrappedContext01"
+ outContent="Context01 PASSED"/>
+
+ <!-- NOTE: Assign role "manager" to user "tomcat" for this to work -->
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ inHeaders="Authorization:Basic dG9tY2F0OnRvbWNhdA=="
+ request="${manager.path}/reload?path=${reload.path}"
+ outContent="OK - Reloaded application at context path ${reload.path}"/>
+
+ <tester host="${host}" port="${port}" protocol="${protocol}"
+ debug="${debug}"
+ request="${context.path}/WrappedContext02"
+ outContent="Context02 PASSED"/>
</target>
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Context00.java
Index: Context00.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.tester.shared.SharedSessionBean;
import org.apache.tester.unshared.UnsharedSessionBean;
/**
* Part 0 of Context Tests. This servlet is never executed directly. Its
* purpose is to create a servlet context attribute at <code>init()</code>
* time, and remove it at <code>destroy()</code> time.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/06/23 19:27:24 $
*/
public class Context00 extends HttpServlet {
public void destroy() {
getServletContext().log("Context00: Removing attribute 'context00'");
getServletContext().removeAttribute("context00");
}
public void init() throws ServletException {
getServletContext().log("Context00: Setting attribute 'context00'");
ContextBean cb = new ContextBean();
cb.setStringProperty("Context00");
getServletContext().setAttribute("context00", cb);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/plain");
PrintWriter writer = response.getWriter();
writer.println("Context00 PASSED");
while (true) {
String message = StaticLogger.read();
if (message == null)
break;
writer.println(message);
}
StaticLogger.reset();
}
}
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Context01.java
Index: Context01.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.tester.shared.SharedSessionBean;
import org.apache.tester.unshared.UnsharedSessionBean;
/**
* Part 1 of Context Tests. Exercise various methods for dealing with
* servlet context attributes. Leave an attribute named "context01"
* present, which should be erased after a web application restart.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/06/23 19:27:24 $
*/
public class Context01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/plain");
boolean ok = true;
PrintWriter writer = response.getWriter();
ServletContext context = getServletContext();
// Ensure that there is no existing attribute
if (ok) {
if (context.getAttribute("context01") != null) {
writer.println("Context01 FAILED - Attribute already exists");
ok = false;
}
}
// Create and stash a context attribute
if (ok) {
context.setAttribute("context01", "This is Context01");
}
// Ensure that we can retrieve the attribute successfully
if (ok) {
Object bean = context.getAttribute("context01");
if (bean == null) {
writer.println("Context01 FAILED - Cannot retrieve attribute");
ok = false;
} else if (!(bean instanceof String)) {
writer.println("Context01 FAILED - Attribute instance of " +
bean.getClass().getName());
ok = false;
} else {
String value = (String) bean;
if (!"This is Context01".equals(value)) {
writer.println("Context01 FAILED - Value = " + value);
ok = false;
}
}
}
// Ensure that setAttribute("name", null) works correctly
if (ok) {
context.setAttribute("FOO", "BAR");
context.setAttribute("FOO", null);
if (context.getAttribute("FOO") != null) {
writer.println("Context01 FAILED - setAttribute(name,null)");
ok = false;
}
}
// Report success if everything is still ok
if (ok)
writer.println("Context01 PASSED");
while (true) {
String message = StaticLogger.read();
if (message == null)
break;
writer.println(message);
}
StaticLogger.reset();
}
}
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Context02.java
Index: Context02.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.tester.shared.SharedSessionBean;
import org.apache.tester.unshared.UnsharedSessionBean;
/**
* Part 2 of Context Tests. The context attribute from Context00 should
* still be here after a restart (because Context00 is a load-on-startup
* servlet, so the <code>init()</code> method should have been triggered
* during the restart). However, the context attribute from Context01
* should <strong>not</strong> be here, because context attributes should
* be cleaned up during a restart.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/06/23 19:27:24 $
*/
public class Context02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/plain");
boolean ok = true;
PrintWriter writer = response.getWriter();
ServletContext context = getServletContext();
// Check for the attribute from Context01
if (ok) {
Object bean = context.getAttribute("context01");
if (bean != null) {
writer.println("Context02 FAILED - context01 value " +
bean);
ok = false;
context.removeAttribute("context01");
}
}
// Check for the attribute from Context00
if (ok) {
Object bean = context.getAttribute("context00");
if (bean == null) {
writer.println("Context02 FAILED - context00 missing");
ok = false;
} else if (!(bean instanceof ContextBean)) {
writer.println("Context02 FAILED - context00 class " +
bean.getClass().getName());
ok = false;
} else {
String value = ((ContextBean) bean).getStringProperty();
if (!"Context00".equals(value)) {
writer.println("Context02 FAILED - context00 value " +
value);
ok = false;
}
}
}
// Report success if everything is still ok
if (ok)
writer.println("Context02 PASSED");
while (true) {
String message = StaticLogger.read();
if (message == null)
break;
writer.println(message);
}
StaticLogger.reset();
}
}
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/ContextBean.java
Index: ContextBean.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.Serializable;
/**
* Simple JavaBean to use for context attribute tests.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/06/23 19:27:24 $
*/
public class ContextBean implements Serializable {
// ------------------------------------------------------------- Properties
/**
* A string property.
*/
protected String stringProperty = "Default String Property Value";
public String getStringProperty() {
return (this.stringProperty);
}
public void setStringProperty(String stringProperty) {
this.stringProperty = stringProperty;
}
// --------------------------------------------------------- Public Methods
/**
* Return a string representation of this bean.
*/
public String toString() {
StringBuffer sb = new StringBuffer("ContextBean[stringProperty=");
sb.append(this.stringProperty);
sb.append("]");
return (sb.toString());
}
}
1.38 +61 -0 jakarta-tomcat-4.0/tester/web/WEB-INF/web.xml
Index: web.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/tester/web/WEB-INF/web.xml,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- web.xml 2001/05/30 21:54:54 1.37
+++ web.xml 2001/06/23 19:27:24 1.38
@@ -70,6 +70,21 @@
<filter-mapping>
<filter-name>HttpFilter</filter-name>
+ <url-pattern>/WrappedContext00</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>HttpFilter</filter-name>
+ <url-pattern>/WrappedContext01</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>HttpFilter</filter-name>
+ <url-pattern>/WrappedContext02</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>HttpFilter</filter-name>
<url-pattern>/WrappedDecoding01</url-pattern>
</filter-mapping>
@@ -417,6 +432,22 @@
</servlet>
<servlet>
+ <servlet-name>Context00</servlet-name>
+ <servlet-class>org.apache.tester.Context00</servlet-class>
+ <load-on-startup>99</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Context01</servlet-name>
+ <servlet-class>org.apache.tester.Context01</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Context02</servlet-name>
+ <servlet-class>org.apache.tester.Context02</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>Decoding01</servlet-name>
<servlet-class>org.apache.tester.Decoding01</servlet-class>
</servlet>
@@ -764,6 +795,36 @@
<servlet-mapping>
<servlet-name>Authentication05</servlet-name>
<url-pattern>/disallowed/Authentication05</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context00</servlet-name>
+ <url-pattern>/Context00</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context00</servlet-name>
+ <url-pattern>/WrappedContext00</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context01</servlet-name>
+ <url-pattern>/Context01</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context01</servlet-name>
+ <url-pattern>/WrappedContext01</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context02</servlet-name>
+ <url-pattern>/Context02</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Context02</servlet-name>
+ <url-pattern>/WrappedContext02</url-pattern>
</servlet-mapping>
<servlet-mapping>