DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3841>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3841 incorrect state reported by EmbeddedManager.java:start() Summary: incorrect state reported by EmbeddedManager.java:start() Product: Tomcat 4 Version: 4.0 Final Platform: All OS/Version: Other Status: NEW Severity: Minor Priority: Other Component: Catalina AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The start() method of EmbeddedManager.java reports its state incorrectly if Embedded.java:start() throws an exception. The "catch" block looks OK, it sets the state to "Stopped", but the problem is that the code after the catch then gets executed and sends an erroneous AttributeChangeNotification to the JMX MBean Server. The fix is to put the AttributeChangeNotification into the try{} block, so that it won't run if an error is thrown. Here's a patch: Index: catalina/src/share/org/apache/catalina/startup/EmbeddedManager.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/EmbeddedManager.java,v retrieving revision 1.3 diff -u -r1.3 EmbeddedManager.java --- catalina/src/share/org/apache/catalina/startup/EmbeddedManager.java 2001/07/22 20:25:13 1.3 +++ catalina/src/share/org/apache/catalina/startup/EmbeddedManager.java 2001/09/26 +16:19:17 @@ -192,6 +192,13 @@ embedded.start(); + state = STARTED; + notification = new AttributeChangeNotification + (this, sequenceNumber++, System.currentTimeMillis(), + "Started " + NAME, "State", "java.lang.Integer", + new Integer(STARTING), new Integer(STARTED)); + sendNotification(notification); + } catch (Throwable t) { state = STOPPED; notification = new AttributeChangeNotification @@ -200,13 +207,6 @@ new Integer(STARTING), new Integer(STOPPED)); sendNotification(notification); } - - state = STARTED; - notification = new AttributeChangeNotification - (this, sequenceNumber++, System.currentTimeMillis(), - "Started " + NAME, "State", "java.lang.Integer", - new Integer(STARTING), new Integer(STARTED)); - sendNotification(notification); }