I originally had a problem whereby I could not open attachments in the email
portlet and thought this was down to TOmcat version.

However, if I have one pane with one portlet (the email portlet) I get the
open/save/cancel dialog as expected whe I click on the attachment's link. If
I add another portlet using the one column layout with the email portlet at
the top , this still works. If I swap the portlets so that email portlet is
at the bottom it no longer works with the following exception being thrown
:-

ERROR Error in doDownload()
java.lang.IllegalStateException: getWriter() has already been called for
this response
        at
org.apache.coyote.tomcat5.CoyoteResponse.getOutputStream(CoyoteResponse.java
:568)
        at
org.apache.coyote.tomcat5.CoyoteResponseFacade.getOutputStream(CoyoteRespons
eFacade.java:148)
        at
org.apache.jetspeed.modules.actions.portlets.email.EmailPortlet.doDownload(E
mailPortlet.java:1488)
        at sun.reflect.GeneratedMethodAccessor221.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.turbine.modules.ActionEvent.executeEvents(ActionEvent.java:189)
        at
org.apache.jetspeed.modules.actions.portlets.PortletActionEvent.executeEvent
s(PortletActionEvent.java:142)
        at
org.apache.jetspeed.modules.actions.portlets.GenericMVCAction.perform(Generi
cMVCAction.java:105)
        at
org.apache.turbine.modules.ActionLoader.exec(ActionLoader.java:122)
        at
org.apache.jetspeed.portal.portlets.GenericMVCPortlet.buildContent(GenericMV
CPortlet.java:276)
        at
org.apache.jetspeed.portal.portlets.GenericMVCPortlet.getContent(GenericMVCP
ortlet.java:207)
        at
org.apache.jetspeed.portal.security.portlets.PortletWrapper.getContent(Portl
etWrapper.java:119)
        at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260
)
        at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:207)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:250)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:109)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:109)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.jetspeed.portal.controls.VelocityPortletControl.getContent(Veloci
tyPortletControl.java:155)
        at sun.reflect.GeneratedMethodAccessor125.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260
)
        at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:207)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:250)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
        at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.jav
a:153)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
        at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.jav
a:153)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.jetspeed.portal.controllers.VelocityPortletController.getContent(
VelocityPortletController.java:105)
        at
org.apache.jetspeed.portal.BasePortletSet.getContent(BasePortletSet.java:353
)
        at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260
)
        at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:207)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:250)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.jetspeed.portal.controllers.VelocityPortletController.getContent(
VelocityPortletController.java:105)
        at
org.apache.jetspeed.portal.BasePortletSet.getContent(BasePortletSet.java:353
)
        at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260
)
        at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:207)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:250)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:128)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:109)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.jetspeed.portal.controls.VelocityPortletControl.getContent(Veloci
tyPortletControl.java:155)
        at
org.apache.jetspeed.util.template.JetspeedTool.getPane(JetspeedTool.java:154
)
        at sun.reflect.GeneratedMethodAccessor181.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260
)
        at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:207)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:250)
        at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:128)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.turbine.modules.screens.VelocityDirectScreen.buildTemplate(Veloci
tyDirectScreen.java:123)
        at
org.apache.turbine.modules.screens.TemplateScreen.doBuild(TemplateScreen.jav
a:130)
        at org.apache.turbine.modules.Screen.build(Screen.java:99)
        at
org.apache.turbine.modules.ScreenLoader.eval(ScreenLoader.java:129)
        at
org.apache.turbine.util.template.TemplateScreen.toString(TemplateScreen.java
:126)
        at
org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.jav
a:321)
        at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:27
1)
        at org.apache.velocity.Template.merge(Template.java:296)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:492)
        at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.decodeRequest(Tu
rbineVelocityService.java:494)
        at
org.apache.turbine.services.velocity.TurbineVelocityService.handleRequest(Tu
rbineVelocityService.java:336)
        at
org.apache.turbine.services.velocity.TurbineVelocity.handleRequest(TurbineVe
locity.java:143)
        at
org.apache.turbine.modules.layouts.VelocityDirectLayout.doBuild(VelocityDire
ctLayout.java:106)
        at org.apache.turbine.modules.Layout.build(Layout.java:91)
        at
org.apache.turbine.modules.LayoutLoader.exec(LayoutLoader.java:123)
        at
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:169)
        at org.apache.turbine.modules.Page.build(Page.java:90)
        at org.apache.turbine.modules.PageLoader.exec(PageLoader.java:123)
        at org.apache.turbine.Turbine.doGet(Turbine.java:563)
        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(Application
FilterChain.java:237)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:214)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:198)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:152)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118
)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:683)
        at java.lang.Thread.run(Thread.java:534)

This happens when the code attempts to write the attachment
(m_response.getOutputStream().write(b, 0, b.length);)

I am presuming that this is caused either by not being able to write text
and binary data using the same output stream or not being able to write to
the response header at the same time as the response body is being written
to.

As this only happens when another portlet is in existence it would appear
the either writer's or output streams are not being released.

Any assistance would be greatly appeciated.

Jon Hawkins


This email and any files transmitted with it are confidential 
and intended solely for the use of the individual or entity to 
whom they are addressed. Any unauthorised distribution or 
copying is strictly prohibited. Whilst Cedar Software Ltd 
takes steps to prevent the transmission of viruses via e-mail, 
we cannot guarantee that any email or attachment is free from 
computer viruses and you are strongly advised to undertake your 
own anti-virus precautions. Cedar Software Ltd grants no 
warranties regarding performance, use or quality of any e-mail 
or attachment and undertakes no liability for loss or damage, 
howsoever caused.  


For more information on Cedar Software and our products, 
please visit our web site at http://www.cedar.com/Home.asp


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

Reply via email to