Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

response is comitted cannot forward to

23 views
Skip to first unread message

Piotrek_20

unread,
May 9, 2010, 1:43:51 PM5/9/10
to
Witam,
Posiadam 2 aplikacje.
1. napisana jest w seamie w ktorej mam obrazek
<img src =""" />

gdzie adres odnosi się do drugiej aplikacji
<imh src="http://localhost:8080/engine/img/2" />

Druga aplkacja to zwykły servlet, który generuje obrazki wczytywane z
bazy. Na aplikacje jest nałożony tuckey filter, zeby tworzyć ładen
Urlki.

No i tutaj jest problem. Czasami, jak przeglądam aplikacje Seamową,
gdzie wyswietlam obrazki, obrazek sie nie chce wyświetlić a w logach
dostaje coś takiego.

2010-05-09 17:22:38 org.apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.RewrittenUrl ERROR: response
is comitted cannot forward to /img?id=2 (check you haven't done
anything to the response (ie, written to it) before here)

Wniosek taki ze response został wg. mnie flushowany a tuckey filtr
probuje robic forward dla responsa. Dobrze rozumiem?

Oto moj rewrite url:
<rule>
<from>^/img/([0-9]+)$</from>
<to>/img?id=$1</to>
</rule>

Czy jest jakis sposob zeby wykryc co powoduje mi ten commit?
Po stronie aplikacji seam mam zwykłą strone html, nie mam zadnych
filtrow, natomiast po stronie silnika obrazkow wyrzucany jest
exception jeszcze przed wyswietleniem obrazka, w miejscu
przekierowania url.

Prosze o pomoc lub sugestie.

Mikolaj Rydzewski

unread,
May 11, 2010, 6:03:00 AM5/11/10
to
Piotrek_20 wrote:

> Czy jest jakis sposob zeby wykryc co powoduje mi ten commit?

> Po stronie aplikacji seam mam zwyk�� strone html, nie mam zadnych
> filtrow,

Tutaj bledow nie szukaj. Request po strone html z kodem <img src> to nie
jest request po obrazek. Wiec tutaj nie ma ww problemu.

> natomiast po stronie silnika obrazkow wyrzucany jest
> exception jeszcze przed wyswietleniem obrazka, w miejscu
> przekierowania url.

I pewnie ten wyjatek jest wypisywany do response. Co powoduje niemoznosc
dokonania forwardu.

Piotrek_20

unread,
May 11, 2010, 4:11:38 PM5/11/10
to
A czy moglbys mnie nakierować, bo troche niebardzo rozumiem co zrobic
teraz.
Tak masz racje, obrazek jest wyrzucany do response:

out = res.getOutputStream();
IIOImage image = new IIOImage(bufferedImage, null, null);

writer.setOutput(ImageIO.createImageOutputStream(out));
writer.write(null, image, iwp);
writer.dispose();

Mikolaj Rydzewski

unread,
May 12, 2010, 3:33:58 AM5/12/10
to
Piotrek_20 wrote:
> A czy moglbys mnie nakierowaďż˝, bo troche niebardzo rozumiem co zrobic

Ale w Twoim przypadku do tego miejsca sterowanie wogole nie dochodzi.
Blad wystepuje juz na poziomie filtra do przekierowan:

INFO: org.tuckey.web.filters.urlrewrite.RewrittenUrl ERROR: response
is comitted cannot forward to /img?id=2 (check you haven't done
anything to the response (ie, written to it) before here)

Cos Ci pisze do response zanim ww filtr zacznie swoja prace.

Piotrek_20

unread,
May 12, 2010, 4:47:37 AM5/12/10
to
Dziekuję za pomoc, ale jeszcze zapytam.
Czy jest mozliwe przedebugowanie co moze mi wpisywac do response?

Piotrek_20

unread,
May 12, 2010, 4:50:11 AM5/12/10
to
Na aplikacji mam załozony UTF8 filtr, ktory własnie działa przed
tuckey,


oto cała zawartosc filtra
res.setContentType("text/html; charset=UTF-8");
req.setCharacterEncoding("UTF8");
chain.doFilter(req, res);

jednak po wyłączeniu go, dalej otrzymuję ten sam komunikat. Aplikacja
stoi na tiles 2 (servlet), co jeszcze przychodzi mi do głowy, a tak
poza tym to nie ma tam nic juz szczegolnego, same JSP'ki i JDBC.


Piotrek_20

unread,
May 12, 2010, 5:50:19 AM5/12/10
to
Oto pełny stack trace....
dostaje naprzemiennie ten blad

2010-05-09 17:22:38 org.apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.RewrittenUrl ERROR: response
is comitted cannot forward to /img?id=2 (check you haven't done
anything to the response (ie, written to it) before here)

lub ten (jednak ten nizej to wydaje mi sie ze jest z aplikacji
seamowej, ktora wyswietla obrazek, "wyrzucany" przez servlet.


SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: Cannot create a session after the
response has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:
2381)
at org.apache.catalina.connector.Request.getSession(Request.java:
2098)
at
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:
833)
at
org.jboss.seam.mock.MockExternalContext.getSessionMap(MockExternalContext.java:
357)
at
org.jboss.seam.contexts.FacesLifecycle.beginExceptionRecovery(FacesLifecycle.java:
86)
at
org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:
96)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:
70)
at org.jboss.seam.servlet.SeamFilter
$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter
$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:
178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:
388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter
$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at org.jboss.seam.servlet.SeamFilter
$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
at
org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:
227)
at
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:
347)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
298)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:
190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:
291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:
698)
at org.apache.jk.common.ChannelSocket
$SocketConnection.runIt(ChannelSocket.java:891)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:595)

Mikolaj Rydzewski

unread,
May 12, 2010, 6:38:38 AM5/12/10
to
Piotrek_20 wrote:
> Na aplikacji mam za�ozony UTF8 filtr, ktory w�asnie dzia�a przed
> tuckey,
>
>
> oto ca�a zawartosc filtra

> res.setContentType("text/html; charset=UTF-8");
> req.setCharacterEncoding("UTF8");
> chain.doFilter(req, res);
>
> jednak po wy��czeniu go, dalej otrzymuj� ten sam komunikat. Aplikacja
> stoi na tiles 2 (servlet), co jeszcze przychodzi mi do g�owy, a tak

> poza tym to nie ma tam nic juz szczegolnego, same JSP'ki i JDBC.

Co nazywasz aplikacja? Bo masz dwie? Osobny war dla obrazkow i osobny
war z 'glowna' aplikacja? Czy jak requestujesz TYLKO te aplikacje dla
obrazkow to bledy nadal sa? Po co ustawiasz text/html;UTF8 dla obrazkow?

No i w kodzie wypisujacym obrazki do response nie widac ustawiania
content type - ale ustawiasz poprawny?

Piotrek_20

unread,
May 12, 2010, 6:55:54 AM5/12/10
to
Witaj Mikołaju,
Może pokolei.

Mam 2 aplikacje:
1. Seam gdzie wyswietlam obrazki serwowane z drugiej aplikacji
servletowej.
2. Druga aplikacja ma prosty interfejs uzytkownika, ale glowny element
to silnik tworzący obrazki.

W drugiej aplikacji mam ustawiony filtr przed tuckey, rewrite url,
zeby mi kodowanie UTF8 poprawnie w jsp'ach wyswietalo.
Natomiast w pliku servlecie serwejącym obrazki mam ustawiony naglowek:

res.setContentType("image/jpg");

No i problem polega na tym, ze po dodaniu drugiej aplikacji serwującej
obrazki, zaczely sie pojawiac w logach tomcata wlasnie takie
komunikaty, a aplikacja seamowa zaczela sie tak zachowywac ze czasem,
randomowo po kliknieciu w link wyswietla mi kod html na stronie a nie
zawartosc strony.

>Co nazywasz aplikacja? Bo masz dwie? Osobny war dla obrazkow i osobny
>war z 'glowna' aplikacja?

Tak, obie aplikacje to osobne wary.

miluch

unread,
May 22, 2010, 7:48:13 AM5/22/10
to

Rozumiem że Tuckey jest ustawiony tylko dla aplikacji "nieseam"?
Po co ci filtr UTF8 dla aplikacji "nieseam" ? Czyżby oprócz serwowania
obrazków wyświetla ona jeszcze jakieś jsp ?
Aby sprawdzić co i w jaki sposób działa na request/response możnaby
podpiąc jako 1 własny filtr który opakowuje oryginalny parę request/
response (pewnie starczy tylko response w postaci
HttpServletResponseWrapper) i tam zaczaić się na odpowiednie metody.

pzdr miluch

0 new messages