Author: markt
Date: Thu Feb 24 17:25:38 2011
New Revision: 1074225
URL: http://svn.apache.org/viewvc?rev=1074225&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50826
Avoid IAE when Tomcat instance is destroyed without every being started.
Add a test case for this.
Modified:
tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1074225&r1=1074224&r2=1074225&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Thu Feb 24
17:25:38 2011
@@ -5486,11 +5486,15 @@ public class StandardContext extends Con
((Lifecycle) loader).destroy();
}
- // Send j2ee.object.deleted notification
- Notification notification =
- new Notification("j2ee.object.deleted", this.getObjectName(),
- sequenceNumber.getAndIncrement());
- broadcaster.sendNotification(notification);
+ // If in state NEW when destroy is called, the object name will never
+ // have been set so the notification can't be created
+ if (getObjectName() != null) {
+ // Send j2ee.object.deleted notification
+ Notification notification =
+ new Notification("j2ee.object.deleted", this.getObjectName(),
+ sequenceNumber.getAndIncrement());
+ broadcaster.sendNotification(notification);
+ }
if (namingResources != null) {
namingResources.destroy();
Modified: tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java?rev=1074225&r1=1074224&r2=1074225&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java Thu Feb 24
17:25:38 2011
@@ -326,4 +326,21 @@ public class TestTomcat extends TomcatBa
assertTrue(res.toString().contains("<?xml version=\"1.0\" "));
}
+ public void testBug50826() throws Exception {
+ Tomcat tomcat = getTomcatInstance();
+ String contextPath = "/examples";
+
+ File appDir = new File(getBuildDirectory(), "webapps" + contextPath);
+ // app dir is relative to server home
+ tomcat.addWebapp(null, "/examples", appDir.getAbsolutePath());
+
+ Exception e = null;
+ try {
+ tomcat.destroy();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ e = ex;
+ }
+ assertNull(e);
+ }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1074225&r1=1074224&r2=1074225&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Feb 24 17:25:38 2011
@@ -133,7 +133,7 @@
<add>
Web crawlers can trigger the creation of many thousands of sessions as
they crawl a site which may result in significant memory consumption.
- Thw new Crawler Session Manager Valve ensures that crawlers are
+ The new Crawler Session Manager Valve ensures that crawlers are
associated with a single session - just like normal users - regardless
of whether or not they provide a session token with their requests.
(markt)
@@ -142,6 +142,11 @@
Don't attempt to start NamingResources for Contexts multiple
times.
(markt)
</fix>
+ <fix>
+ <bug>50826</bug>: Avoid <code>IllegalArgumentException</code> if an
+ embedded Tomcat instance that includes at least one Context is
destroyed
+ without ever being started. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]