I'd appreciate it if someone can clarify whether the following is a bug in TC4 or not.
I have a servlet whose doPost() implementation simply gets hold of a requestdispatcher and invokes forward() on it. The form that is posted contains a couple of name/value parameters. The forwarded-to servlet runs into an error when it tries to read data from the input stream of the request. The error is that the input stream has already been closed. o.a.c.core.ApplicationDispatcher.forward() invokes its wrapRequest() method which in turn ends up invoking ApplicationHttpRequest.setRequest() which reads the parameters (request.getParameterMap()) from the input stream and closes the input stream. The servlet spec says the following about POST data parameters. ------ SRV.4.1.1 When Parameters Are Available The following are the conditions that must be met before post form data will be populated to the parameter set: 1. The request is an HTTP or HTTPS request. 2. The HTTP method is POST 3. The content type is application/x-www-form-urlencoded 4. The servlet has made an initial call of any of the getParameter family of methods on the request object. If the conditions are not met and the post form data is not included in the parameter set, the post data must still be available to the servlet via the request object’s input stream. If the conditions are met, post form data will no longer be available for reading directly from the request object’s input stream. ------- If my understanding is right, condition #4 is not met in the ApplicationDispatcher.forward() codepath, so the parameters/data should not have been read from the input stream. (I read the request dispatcher section of the spec and it only talked about query string parameters and doesn't say what should be done to the data on the input stream.) Thanks, Arvind -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>