Hello!

I have just upgraded from JBoss/Jetty 3.0.4 to JBoss/Tomcat 3.2.3, and
have noticed some rather odd behavior.

I have 3 servlets: SuperClazz <|--- SubClazz <|--- SubSubClazz

SuperClazz subclasses HttpServlet but is not meant to be called directly,
but SubClazz and SubSubClazz are both standalone servlets and I call them
directly depending on what I need. SubClazz does general things, and
SubSubClazz does more specific things. SubClazz delegates to SuperClazz
and SubSubClazz delegates to SubClazz as needed. This was working in JBoss
3.0.4 and Jetty.

However, in Tomcat 4.1.29 just now I observed that calling SubClazz
directly resulted in SubSubClazz getting the call, then execution tracing
straight to SuperClazz, _then_ SubClazz. SubSubClazz was the last thing
executing before it failed. (That failure is the thing; SubSubClazz doesn't
have what it takes to handle my request, and I don't want it called.)

Here is an example of my problem. By calling the URL:
   http://localhost/myApp/servlet/SubClazz?a=1

I get this output from the running server:

10:23:24,020 INFO  [STDOUT] [SubSubClazz.doGet] GOT HERE 1
10:23:24,020 INFO  [STDOUT] [SubSubClazz.doPost] GOT HERE 1
10:23:24,020 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 1
10:23:24,021 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 2
10:23:24,021 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 3
10:23:24,021 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 4
10:23:24,021 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 5
10:23:24,021 INFO  [STDOUT] [SuperClazz.doPost] GOT HERE 6
10:23:24,021 INFO  [STDOUT] [SubClazz.doPost] GOT HERE 1
10:23:24,021 INFO  [STDOUT] [SubClazz.doPost] GOT HERE 2
10:23:24,021 INFO  [STDOUT] [SuperClazz.doAThing] GOT HERE 1
10:23:24,023 ERROR [Engine] StandardWrapperValve[SubSubClazz]: Servlet.service() for
servlet SubSubClazz threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
        at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:368)
        at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
        ...bad stuff happening since correct calling order is not happening...

Can anybody explain why:

SubClazz is being skipped and SubSubClazz is getting the request in the
first place?

SubClazz is not getting the super() call, but instead it is going straight
to SuperClazz?

SubClazz is getting the call after SuperClazz, especially after having been
skipped originally?


Thanks very much in advance for any light that can be shed on this
behavior.

Bill Wadley

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to