geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan <xhh...@gmail.com>
Subject Re: logging servlet filter
Date Fri, 12 Sep 2008 09:59:05 GMT
I guess the method getInputStream is used for the developers who want to
handle the request block themselves. Maybe the server could call some
low-level methods in the implementation of the HttpServletRequest for
request parsing.
I suggest you could use the network monitor tool to log the request block.
If you really want to do it in the server itself, maybe a third pary request
parser is needed,such as commons-fileupload.
I suppose the steps below could fulfill your requirements:
1. First using your current wrapper request to log the data
2. Pass your wrapper request to the commons-fileupload. maybe use new  *
ServletFileUpload**<http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html#ServletFileUpload%28%29>
*() .parse(yourwrapperRequest)
3. For the method parse above returns a list object, you need to write
another wrapper request, and overwrite some method in it (such as
getParameter) to make your application works as usual




2008/9/12 Marco Laponder <marco.laponder@kewill.com>

> Hi All,
>
> I am trying to create a servlet filter to monitor the requests on my web
> application.
>
> I would like to record the URI and query string and I have accomplished
> this without any problems. But when I added code to log the posted data
> this results in some problems.
>
> I read the posted data from the input stream of the request and copy
> these contents to file. So far so good. But when my web application code
> is executing it is missing all the data from the post in the parameter
> map returned by the getParameterMap() function on the request, I suspect
> because I have read all the data from the input stream of the request.
>
> I tried to solve it by calling the doFilter on the chain with a wrapper
> request with a custom getInputStream method where I return my own
> servlet inputstream containing the data I had read from the original
> inputstream, but the getInpustream is never called on my wrapper.
>
> Can anyone provide me with some insight how to accomplish such a logging
> and what I am doing wrong in the structure above ?
>
> Kind regards,
> Marco Laponder
>
>
>
>
>
>


-- 
Ivan

Mime
View raw message