Response wrapper

hallo,
ich habe folgendes problem bzgl. eine response-wrapper objekts in einem servlet filter.Ich möchte den response des servlets nachträglich manipulieren. der code sieht etwa so aus

OutputStream out = response.getOutputStream();
GenericResponseWrapper wrapper = new GenericResponseWrapper((HttpServletResponse) response);
filterchain.doFilter(request, wrapper);
out.write(" DANACH ".getBytes());
out.close();

dies liefert mir keinen content zurück. folgendes ist zu beobachten:

  1. ohne aufruf von filterchain.doFilter() wird DANACH ausgegeben
  2. mit übergabe des responses anstatt wrapper an filterchain.doFilter() wird der normal generierte response ausgegeben, nichts weiter
  3. der byte-buffer des wrappers ist aber mit content nach aufruf von filterchain.doFilter gefüllt

kann mir da jemand weiterhelfen?

Hallo Jonnik,

[…]

> OutputStream out = response.getOutputStream();  
> GenericResponseWrapper wrapper = new  
> GenericResponseWrapper((HttpServletResponse) response);  
> filterchain.doFilter(request, wrapper);  
> out.write(" DANACH ".getBytes());  
> out.close();

Ich habe zwar noch nicht mit GenericResponseWrapper gearbeitet, aber aus meine Sicht solltes Du das out Objekt mit dem OutputStream des Wrappers initialisieren.
Evtl. gibt es ja ein wrapper.getOutputStream() (immer vorausgesetzt die GenericResponseWrapper Klasse hat als Superklasse ServletResponse)

Dein obiger Code müsste dann wie folgt aussehen:

GenericResponseWrapper wrapper = new
GenericResponseWrapper((HttpServletResponse) response);
filterchain.doFilter(request, wrapper);
OutputStream out = wrapper.getOutputStream();
out.write(" DANACH ".getBytes());
out.close();

Gruss,
Frank