Author: markt Date: Wed Jun 15 13:21:16 2011 New Revision: 1136028 URL: http://svn.apache.org/viewvc?rev=1136028&view=rev Log: (empty)
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1136028&r1=1136027&r2=1136028&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Wed Jun 15 13:21:16 2011 @@ -1020,6 +1020,10 @@ public class StandardWrapper extends Con public synchronized void load() throws ServletException { instance = loadServlet(); + if (!instanceInitialized) { + initServlet(instance); + } + if (isJspServlet) { StringBuilder oname = new StringBuilder(MBeanUtils.getDomain(getParent())); Modified: tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java?rev=1136028&r1=1136027&r2=1136028&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestStandardContext.java Wed Jun 15 13:21:16 2011 @@ -321,6 +321,90 @@ public class TestStandardContext extends } + public void testBug51376() throws Exception { + // Set up a container + Tomcat tomcat = getTomcatInstance(); + + // Must have a real docBase - just use temp + File docBase = new File(System.getProperty("java.io.tmpdir")); + Context ctx = tomcat.addContext("", docBase.getAbsolutePath()); + + // Add ServletContainerInitializer + Bug51376SCI sci = new Bug51376SCI(); + ctx.addServletContainerInitializer(sci, null); + + // Start the context + tomcat.start(); + + // Stop the context + ctx.stop(); + + // Make sure that init() and destroy() were called correctly + assertTrue(sci.getServlet().isOk()); + } + + public static final class Bug51376SCI + implements ServletContainerInitializer { + + private Bug51376Servlet s = null; + + private Bug51376Servlet getServlet() { + return s; + } + + @Override + public void onStartup(Set<Class<?>> c, ServletContext ctx) + throws ServletException { + // Register and map servlet + s = new Bug51376Servlet(); + ServletRegistration.Dynamic sr = ctx.addServlet("bug51376", s); + sr.addMapping("/bug51376"); + sr.setLoadOnStartup(1); + } + } + + public static final class Bug51376Servlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + private Boolean initOk = null; + private Boolean destoryOk = null; + + @Override + public void init() { + if (initOk == null && destoryOk == null) { + initOk = Boolean.TRUE; + } else { + initOk = Boolean.FALSE; + } + } + + @Override + public void destroy() { + if (initOk.booleanValue() && destoryOk == null) { + destoryOk = Boolean.TRUE; + } else { + destoryOk = Boolean.FALSE; + } + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + resp.setContentType("text/plain"); + resp.getWriter().write("OK"); + } + + protected boolean isOk() { + if (initOk != null && initOk.booleanValue() && destoryOk != null && + destoryOk.booleanValue()) { + return true; + } else { + return false; + } + } + } + /** * Test case for bug 49711: HttpServletRequest.getParts does not work * in a filter. Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1136028&r1=1136027&r2=1136028&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Jun 15 13:21:16 2011 @@ -45,6 +45,12 @@ <section name="Tomcat 7.0.17 (markt)"> <subsection name="Catalina"> <changelog> + <fix> + <bug>51376</bug>: When adding a Servlet via + ServletContext#addServlet(String, Servlet), the Servlet was not + initialized when the web application started and a load on startup value + was set. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org