Re: [Wicket-user] Exception on WebResponse Outputstream
you can't just write to something in the constructor (thats in the event/request phase) make a RequestTarget that outputs that what you want and set that request target as the response request target on the request cycle RequestCycle.get().setRequestTarget(new IRequestTarget() { void respond(RequestCycle requestCycle) { Response rep = requestCycle.getResponse(); rep.write(yourxml); } }); johan On 1/23/07, Daniel Nüst [EMAIL PROTECTED] wrote: Hi Igor! Igor Vaynberg schrieb: looks like you are trying to output your xml too late in the game (wicket has already written something to the request). I would rather guess it seems the other way around (and I will try to explain the situation a bit better): * If I use res.write( xmlout.outputString( doc ) );, I do not get the exeption, but the response is not a xml file, but a xml+html document: ?xml version=1.0 encoding=UTF-8? newsList xlmns=http:// ... /newsList html head meta http-equiv=Content-Type content=text/html; charset=Cp1252/ * If I use xmlout.output(doc, res.getOutputStream() );, I have an exception (whole trace): java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java :599) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java :195) at wicket.protocol.http.WebResponse.write(WebResponse.java:315) at wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java :75) at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java :229) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :105) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java :148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection (Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket( PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) To me it looks as if I wrote my xml file and wicket wants to write the html code just behind it (just as it does when i use Response.write() ), but it cannot because I already called getOutputStream(). I create the xml file on runtime and do not have a empty one in the same directory as suggested in the rss examples, but I see not reason that is the problem. what triggers that code? The constructor: public RequestXML() { WebRequest req = (WebRequest) getRequest(); WebResponse res = (WebResponse) getResponse(); parametersToResponse(req.getParameterMap(), res); } catch (IOException e) { e.printStackTrace(); } } I want to use that page to request data out of a Firefox extension. I appreciate every idea. Regards Daniel -igor On 1/22/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi! I want to load an XML-file from a wicket page concerning the html page parameters with javascript. The javascript part (load and parse xml) works fine and also the generated xml file is okay. I just always get an java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:599) at org.apache.catalina.connector.ResponseFacade.getWriter (ResponseFacade.java:195) at wicket.protocol.http.WebResponse.write(WebResponse.java :315) at wicket.protocol.http.BufferedWebResponse.close( BufferedWebResponse.java:75) at wicket.protocol.http.WicketServlet.doGet (WicketServlet.java:229) [...] I did some research on this problem and found some workarounds for jsp. I also tried different combinations of Streams and Writers. Alsways that exception. The code: private void
Re: [Wicket-user] Exception on WebResponse Outputstream
Thank you very much, Johan! I wrote my own XMLRequestTarget around your code and now it works. Daniel Johan Compagner schrieb: you can't just write to something in the constructor (thats in the event/request phase) make a RequestTarget that outputs that what you want and set that request target as the response request target on the request cycle RequestCycle.get().setRequestTarget(new IRequestTarget() { void respond(RequestCycle requestCycle) { Response rep = requestCycle.getResponse(); rep.write(yourxml); } }); johan On 1/23/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi Igor! Igor Vaynberg schrieb: looks like you are trying to output your xml too late in the game (wicket has already written something to the request). I would rather guess it seems the other way around (and I will try to explain the situation a bit better): * If I use res.write( xmlout.outputString( doc ) );, I do not get the exeption, but the response is not a xml file, but a xml+html document: ?xml version= 1.0 encoding=UTF-8? newsList xlmns=http:// ... /newsList html head meta http-equiv=Content-Type content=text/html; charset=Cp1252/ * If I use xmlout.output(doc, res.getOutputStream() );, I have an exception (whole trace): java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:599) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195) at wicket.protocol.http.WebResponse.write(WebResponse.java :315) at wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:75) at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:229) at javax.servlet.http.HttpServlet.service (HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java :684) at java.lang.Thread.run(Unknown Source) To me it looks as if I wrote my xml file and wicket wants to write the html code just behind it (just as it does when i use Response.write() ), but it cannot because I already called getOutputStream(). I create the xml file on runtime and do not have a empty one in the same directory as suggested in the rss examples, but I see not reason that is the problem. what triggers that code? The constructor: public RequestXML() { WebRequest req = (WebRequest) getRequest(); WebResponse res = (WebResponse) getResponse(); parametersToResponse(req.getParameterMap(), res); } catch (IOException e) { e.printStackTrace(); } } I want to use that page to request data out of a Firefox extension. I appreciate every idea. Regards Daniel -igor On 1/22/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi! I want to load an XML-file from a wicket page concerning the html page parameters with javascript. The javascript part (load and parse xml) works fine and also the generated xml file is okay. I just always get an
Re: [Wicket-user] Exception on WebResponse Outputstream
Hi Igor! Igor Vaynberg schrieb: looks like you are trying to output your xml too late in the game (wicket has already written something to the request). I would rather guess it seems the other way around (and I will try to explain the situation a bit better): * If I use res.write( xmlout.outputString( doc ) );, I do not get the exeption, but the response is not a xml file, but a xml+html document: ?xml version=1.0 encoding=UTF-8? newsList xlmns=http:// ... /newsList html head meta http-equiv=Content-Type content=text/html; charset=Cp1252/ * If I use xmlout.output(doc, res.getOutputStream() );, I have an exception (whole trace): java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:599) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195) at wicket.protocol.http.WebResponse.write(WebResponse.java:315) at wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:75) at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:229) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) To me it looks as if I wrote my xml file and wicket wants to write the html code just behind it (just as it does when i use Response.write() ), but it cannot because I already called getOutputStream(). I create the xml file on runtime and do not have a empty one in the same directory as suggested in the rss examples, but I see not reason that is the problem. what triggers that code? The constructor: public RequestXML() { WebRequest req = (WebRequest) getRequest(); WebResponse res = (WebResponse) getResponse(); parametersToResponse(req.getParameterMap(), res); } catch (IOException e) { e.printStackTrace(); } } I want to use that page to request data out of a Firefox extension. I appreciate every idea. Regards Daniel -igor On 1/22/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi! I want to load an XML-file from a wicket page concerning the html page parameters with javascript. The javascript part (load and parse xml) works fine and also the generated xml file is okay. I just always get an java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:599) at org.apache.catalina.connector.ResponseFacade.getWriter (ResponseFacade.java:195) at wicket.protocol.http.WebResponse.write(WebResponse.java:315) at wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:75) at wicket.protocol.http.WicketServlet.doGet (WicketServlet.java:229) [...] I did some research on this problem and found some workarounds for jsp. I also tried different combinations of Streams and Writers. Alsways that exception. The code: private void parametersToResponse(MapString, String params, Response res) throws IOException { res.setContentType(text/xml); logger.info(map: + params); // test for illegal keys if ( containsIllegalKeys(params) || params.isEmpty() ) { logger.warn(howtoString); res.write(howtoString); //works! } else { //
Re: [Wicket-user] Exception on WebResponse Outputstream
or even better dont use a page at all, use a shared resource -igor On 1/23/07, Daniel Nüst [EMAIL PROTECTED] wrote: Thank you very much, Johan! I wrote my own XMLRequestTarget around your code and now it works. Daniel Johan Compagner schrieb: you can't just write to something in the constructor (thats in the event/request phase) make a RequestTarget that outputs that what you want and set that request target as the response request target on the request cycle RequestCycle.get().setRequestTarget(new IRequestTarget() { void respond(RequestCycle requestCycle) { Response rep = requestCycle.getResponse(); rep.write(yourxml); } }); johan On 1/23/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi Igor! Igor Vaynberg schrieb: looks like you are trying to output your xml too late in the game (wicket has already written something to the request). I would rather guess it seems the other way around (and I will try to explain the situation a bit better): * If I use res.write( xmlout.outputString( doc ) );, I do not get the exeption, but the response is not a xml file, but a xml+html document: ?xml version= 1.0 encoding=UTF-8? newsList xlmns=http:// ... /newsList html head meta http-equiv=Content-Type content=text/html; charset=Cp1252/ * If I use xmlout.output(doc, res.getOutputStream() );, I have an exception (whole trace): java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:599) at org.apache.catalina.connector.ResponseFacade.getWriter( ResponseFacade.java:195) at wicket.protocol.http.WebResponse.write(WebResponse.java:315) at wicket.protocol.http.BufferedWebResponse.close( BufferedWebResponse.java:75) at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:229) at javax.servlet.http.HttpServlet.service (HttpServlet.java :689) at javax.servlet.http.HttpServlet.service(HttpServlet.java :802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection (Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( ThreadPool.java :684) at java.lang.Thread.run(Unknown Source) To me it looks as if I wrote my xml file and wicket wants to write the html code just behind it (just as it does when i use Response.write() ), but it cannot because I already called getOutputStream(). I create the xml file on runtime and do not have a empty one in the same directory as suggested in the rss examples, but I see not reason that is the problem. what triggers that code? The constructor: public RequestXML() { WebRequest req = (WebRequest) getRequest(); WebResponse res = (WebResponse) getResponse(); parametersToResponse(req.getParameterMap(), res); } catch (IOException e) { e.printStackTrace(); } } I want to use that page to request data out of a Firefox extension. I appreciate every idea. Regards Daniel -igor On 1/22/07, *Daniel Nüst* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi! I want to load an XML-file from a wicket page concerning the html page parameters with javascript. The javascript part (load and parse xml) works fine and also the generated xml
Re: [Wicket-user] Exception on WebResponse Outputstream
looks like you are trying to output your xml too late in the game (wicket has already written something to the request). what triggers that code? also our wiki has an example of a wicket rss page -igor On 1/22/07, Daniel Nüst [EMAIL PROTECTED] wrote: Hi! I want to load an XML-file from a wicket page concerning the html page parameters with javascript. The javascript part (load and parse xml) works fine and also the generated xml file is okay. I just always get an java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java :599) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java :195) at wicket.protocol.http.WebResponse.write(WebResponse.java:315) at wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java :75) at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java :229) [...] I did some research on this problem and found some workarounds for jsp. I also tried different combinations of Streams and Writers. Alsways that exception. The code: private void parametersToResponse(MapString, String params, Response res) throws IOException { res.setContentType(text/xml); logger.info(map: + params); // test for illegal keys if ( containsIllegalKeys(params) || params.isEmpty() ) { logger.warn(howtoString); res.write(howtoString); //works! } else { // get news from database CollectionNews news = getNewsFromDB(params); // create xml document from news Document doc = createXML(news); // write xml file to stream XMLOutputter xmlout = new XMLOutputter(); // res.write( xmlout.outputString( doc ) ); //does not work, res writes xml to beginning of html page xmlout.output(doc, res.getOutputStream() ); //somehow dublicate call of getOutputStream !!! } } Another solution would be, not to use XMLOutputter, just response.write(...), but I don't get a correct XML file but just my xml put before the html: ?xml version=1.0 encoding=UTF-8? newsList [...] html head[...] Anybody an idea how to solve the former or the latter? Regards, Daniel - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user