Re: [Wicket-user] Exception on WebResponse Outputstream

2007-01-23 Thread Johan Compagner

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

2007-01-23 Thread Daniel Nüst
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

2007-01-23 Thread Daniel Nüst
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

2007-01-23 Thread Igor Vaynberg

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

2007-01-22 Thread Igor Vaynberg

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