Does the <s:action...> take make an actual request?

I guess I assumed it executed the action without making a full request,
which could cause the error you're seeing, as the response would
already have been written to by the time your stream result got ahold
of it.

Dave
 
--- "Hoying, Ken" <[EMAIL PROTECTED]> wrote:

> BTW.. I have tested the stream action by calling it directly by
> placing
> the url to action in the address window of my browser and it works
> perfectly then.
>  
> 
> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Laurie Harper
> Sent: Wednesday, May 21, 2008 2:09 PM
> To: user@struts.apache.org
> Subject: Re: [S2] Advice on Handling CLOBs in Struts2
> 
> Since that's not a normal result of using a stream result, I have to
> assume you are doing something wrong. Without seeing the relevant
> code/configuration, though, we can't offer much help.
> 
> L.
> 
> Hoying, Ken wrote:
> > I have tried to accomplish this by creating an action with a stream
> 
> > result type.
> > 
> > I am then including calling the action from with in my JSP page
> using 
> > the <s:action> tag.
> > 
> > Unfortunately though, I am getting the following error:
> > 
> > [2008-05-21 11:26:25,702] [http-0.0.0.0-8080-2] [ERROR] []
> > [ts2.components.ActionComponent]: Could not execute action:
> > /catalog/ContractDetailsNote
> > java.lang.IllegalStateException: getWriter() has already been
> called 
> > for this response
> >     at
> >
>
org.apache.catalina.connector.Response.getOutputStream(Response.java:5
> > 73
> > )
> >     at
> >
>
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseF
> > ac
> > ade.java:183)
> >     at
> >
>
org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java
> > :2
> > 19)
> >     at
> >
>
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResult
> > Su
> > pport.java:178)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultA
> > ct
> > ionInvocation.java:348)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:253)
> >     at
> >
>
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.ja
> > va
> > :50)
> >     at
> >
>
org.apache.struts2.components.ActionComponent.executeAction(ActionComp
> > on
> > ent.java:255)
> >     at
> >
>
org.apache.struts2.components.ActionComponent.end(ActionComponent.java
> > :1
> > 55)
> >     at
> >
>
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTag
> > Su
> > pport.java:43)
> >     at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005facti
> > on
> > _005f0(AjaxContractInfo_jsp.java:413)
> >     at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005fiter
> > at
> > or_005f0(AjaxContractInfo_jsp.java:297)
> >     at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005fsort
> > _0
> > 05f0(AjaxContractInfo_jsp.java:247)
> >     at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspx_meth_s_005felse
> > _0
> > 05f0(AjaxContractInfo_jsp.java:200)
> >     at
> >
>
org.apache.jsp.jsps.catalog.AjaxContractInfo_jsp._jspService(AjaxContr
> > ac
> > tInfo_jsp.java:99)
> >     at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> >     at
> >
>
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.
> > ja
> > va:373)
> >     at
> >
>
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
> >     at
> > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:290)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> >     at
> >
>
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispa
> > tc
> > her.java:654)
> >     at
> >
>
org.apache.catalina.core.ApplicationDispatcher.processRequest(Applicat
> > io
> > nDispatcher.java:445)
> >     at
> >
>
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDi
> > sp
> > atcher.java:379)
> >     at
> >
>
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDisp
> > at
> > cher.java:292)
> >     at
> >
>
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(Servle
> > tD
> > ispatcherResult.java:139)
> >     at
> >
>
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResult
> > Su
> > pport.java:178)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultA
> > ct
> > ionInvocation.java:348)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:253)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInter
> > ce
> > pt(DefaultWorkflowInterceptor.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.invokeUnderTiming
> > (T
> > imerInterceptor.java:125)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.intercept(TimerIn
> > te
> > rceptor.java:112)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Va
> > li
> > dationInterceptor.java:150)
> >     at
> >
>
org.apache.struts2.interceptor.validation.AnnotationValidationIntercep
> > to
> > r.doIntercept(AnnotationValidationInterceptor.java:48)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.invokeUnderTiming
> > (T
> > imerInterceptor.java:125)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.TimerInterceptor.intercept(TimerIn
> > te
> > rceptor.java:112)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.interce
> > pt
> > (ConversionErrorInterceptor.java:123)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(
> > Pa
> > rametersInterceptor.java:167)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.interc
> > ep
> > t(StaticParametersInterceptor.java:105)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxI
> > nt
> > erceptor.java:83)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chai
> > ni
> > ngInterceptor.java:115)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInte
> > rc
> > eptor.java:143)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Pre
> > pa
> > reInterceptor.java:121)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> > Me
> > thodFilterInterceptor.java:86)
> >     at
> >
>
com.premierinc.sca.interceptor.ScaPrepareInterceptor.intercept(ScaPrep
> > ar
> > eInterceptor.java:42)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Serv
> > le
> > tConfigInterceptor.java:170)
> >     at
> >
>
com.premierinc.sca.interceptor.ServletConfigEnhancedInterceptor.interc
> > ep
> > t(ServletConfigEnhancedInterceptor.java:73)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.premierinc.sca.interceptor.UserInterceptor.intercept(UserIntercept
> > or
> > ..java:129)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.premierinc.sca.interceptor.HibernateSessionInterceptor$FilterChain
> > In
> > voker.doFilter(HibernateSessionInterceptor.java:145)
> >     at
> >
>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doF
> > il
> > terInternal(OpenSessionInViewFilter.java:198)
> >     at
> >
>
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRe
> > qu
> > estFilter.java:75)
> >     at
> >
>
com.premierinc.sca.interceptor.HibernateSessionInterceptor.intercept(H
> > ib
> > ernateSessionInterceptor.java:75)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.interc
> > ep
> > t(ExceptionMappingInterceptor.java:176)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:224)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultA
> > ct
> > ionInvocation.java:223)
> >     at
> >
>
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTime
> > rS
> > tack.java:455)
> >     at
> >
>
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn
> > vo
> > cation.java:221)
> >     at
> >
>
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.ja
> > va
> > :50)
> >     at
> >
>
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java
> > :5
> > 04)
> >     at
> >
>
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatch
> > er
> > ..java:419)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> >     at
> >
>
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionCont
> > ex
> > tCleanUp.java:99)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> >     at
> >
>
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFil
> > te
> > r.java:96)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
> > ca
> > tionFilterChain.java:235)
> >     at
> >
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
> > lt
> > erChain.java:206)
> >     at
> >
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa
> > lv
> > e.java:230)
> >     at
> >
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa
> > lv
> > e.java:175)
> >     at
> >
>
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Security
> > As
> > sociationValve.java:179)
> >     at
> >
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat
> > or
> > Base.java:432)
> >     at
> >
>
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve
> > .j
> > ava:84)
> >     at
> >
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja
> > va
> > :127)
> >     at
> >
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja
> > va
> > :102)
> >     at
> >
>
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedCo
> > nn
> > ectionValve.java:157)
> >     at
> >
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java:109)
> >     at
> >
>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> > :2
> > 62)
> >     at
> >
>
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> > 84
> > 4)
> >     at
> >
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proces
> > s(
> > Http11Protocol.java:583)
> >     at
> >
>
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> >     at java.lang.Thread.run(Thread.java:595)
> >  
> > 
> > -----Original Message-----
> > From: Hoying, Ken [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, May 21, 2008 9:42 AM
> > To: user@struts.apache.org
> > Subject: [S2] Advice on Handling CLOBs in Struts2
> > 
> > Generally when working with Struts2, we have been loading a domaon 
> > object from the database in our action and then sending then 
> > referencing the properties as needed from the JSP to generate our
> output.
> > 
> > However, we now what could potentially be a large amount of data 
> > stored in a CLOB.  Using the method that we have been using to
> date, 
> > we would have to place the entire CLOB in a string in the action
> and 
> > then access it from the JSP.  Obviously, we would like to avoid
> doing
> that.
> > 
> > I was wondering if anyone else had come across this and how they
> had 
> > managed to solve it.  How do we stream the content of the CLOB?
> > 
> > Thank you!
> > Ken
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to