Howard, should I file a bug for this?
On 10/13/05, Paolo Donà <[EMAIL PROTECTED]> wrote:
>
> I'm still digging in this issue..
> I'll be more accurate here:
> The ApplicationRuntimeException "Attempt to change ContentType after
> calling getWriter() (cannot change charset from 'UTF8' to 'UTF-8')" happens
> in WLS81 only when generating an error page or when I'm rising a
> PageRedirectException inside a BeginRenderListener.
>
> It seems that the servletResponse is already committed in those cases but
> the ServletWebResponse.getPrintWriter(ContentType) method still try to set
> the contentType and get a new writer without checking if it needs to or
> not...
>
> I think ServletWebResponse.getPrintWriter code should be modified this
> way:
>
> public PrintWriter getPrintWriter(ContentType contentType) throws
> IOException {
> Defense.notNull(contentType, "contentType");
> if (_needsReset)
> reset();
> _needsRes et = true;
>
> if (!_servletResponse.isCommited( ))
> _servletResponse.setContentTyp e(contentType.toString());
> }
>
> try {
> return _servletResponse.getWriter();
> } catch (IOException ex) {
> throw new ...
> }
> }
>
> What do you guys think?
> Ciao,
> Paolo
>
> On 10/13/05, Paolo Donà <[EMAIL PROTECTED]> wrote:
> > Hi guys,
> > I'm trying to deploy a Tapestry4 (b10) app to BEA WebLogic 8.1.
> > The app used to work fine in tomcat 5.x
> > After clicking a DirectLink I'm getting this: "Cannot change charset
> from 'UTF8' to 'UTF-8'"
> >
> > here the stack trace:
> >
> > org.apache.hivemind.ApplicationRuntimeException : Attempt to change
> ContentType after calling getWriter() (cannot change charset from 'UTF8' to
> 'UTF-8')
> > at org.apache.tapestry.error.ExceptionPresenterImpl.presentException
> > (ExceptionPresenterImpl.java:64)
> > at
> $ExceptionPresenter_106e98c06fd.presentException($ExceptionPresenter_106e98c06fd.java)
> > at
> $ExceptionPresenter_106e98c06fc.presentException($ExceptionPresenter_106e98c06fc.java)
> >
> > at org.apache.tapestry.engine.AbstractEngine.activateExceptionPage (
> AbstractEngine.java:121)
> > at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java
> :280)
> > at org.apache.tapestry.services.impl.InvokeEngineTerminator.service
> > (InvokeEngineTerminator.java :60)
> > at
> $WebRequestServicer_106e98c0754.service($WebRequestServicer_106e98c0754.java)
> > at
> $WebRequestServicer_106e98c0750.service($WebRequestServicer_106e98c0750.java)
> > at
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service
> > (WebRequestServicerPipelineBridge.java:56)
> > at
> $ServletRequestServicer_106e98c0734.service($ServletRequestServicer_106e98c0734.java)
> > at org.apache.tapestry.request.DecodedRequestInjector.service(
> DecodedRequestInjector.java
> > :55)
> > at
> $ServletRequestServicerFilter_106e98c0730.service($ServletRequestServicerFilter_106e98c0730.java)
> > at
> $ServletRequestServicer_106e98c0736.service($ServletRequestServicer_106e98c0736.java)
>
> > at org.apache.tapestry.multipart.MultipartDecoderFilter.service
> > (MultipartDecoderFilter.java:52)
> > at
> $ServletRequestServicerFilter_106e98c072e.service($ServletRequestServicerFilter_106e98c072e.java)
>
> > at
> $ServletRequestServicer_106e98c0736.service($ServletRequestServicer_106e98c0736.java)
> >
> > at org.apache.tapestry.services.impl.SetupRequestEncoding.service(
> SetupRequestEncoding.java:53)
> > at
> $ServletRequestServicerFilter_106e98c0732.service($ServletRequestServicerFilter_106e98c0732.java)
>
> > at
> $ServletRequestServicer_106e98c0736.service($ServletRequestServicer_106e98c0736.java)
> >
> > at
> $ServletRequestServicer_106e98c0726.service($ServletRequestServicer_106e98c0726.java)
> > at org.apache.tapestry.ApplicationServlet.doService (
> ApplicationServlet.java:141)
> > at org.apache.tapestry.ApplicationServlet.doGet
> > (ApplicationServlet.java:97)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> > at javax.servlet.http.HttpServlet.service (HttpServlet.java:853)
> > at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
> > (ServletStubImpl.java:996)
> > at weblogic.servlet.internal.ServletStubImpl.invokeServlet(
> ServletStubImpl.java :419)
> > at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
> > at weblogic.servlet.internal.FilterChainImpl.doFilter
> > (FilterChainImpl.java:27)
> > at org.apache.tapestry.RedirectFilter.doFilter (RedirectFilter.java:103)
> > at weblogic.servlet.internal.FilterChainImpl.doFilter(
> FilterChainImpl.java:27)
> > at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run
> > (WebAppServletContext.java :6458)
> > at weblogic.security.acl.internal.AuthenticatedSubject.doAs(
> AuthenticatedSubject.java:321)
> > at weblogic.security.service.SecurityManager.runAs(SecurityManager.java
> :118)
> > at weblogic.servlet.internal.WebAppServletContext.invokeServlet
> > (WebAppServletContext.java:3661)
> > at weblogic.servlet.internal.ServletRequestImpl.execute(
> ServletRequestImpl.java:2630)
> > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> > at weblogic.kernel.ExecuteThread.run
> > (ExecuteThread.java:178)
> > Caused by: java.lang.IllegalStateException: Attempt to change
> ContentType after calling getWriter() (cannot change charset from 'UTF8' to
> 'UTF-8')
> > at weblogic.servlet.internal.ServletResponseImpl.setEncoding
> > (ServletResponseImpl.java:859)
> > at weblogic.servlet.internal.ServletResponseImpl.setHeader(
> ServletResponseImpl.java:685)
> > at weblogic.servlet.internal.ServletResponseImpl.setContentType (
> ServletResponseImpl.java:269)
> >
> > at org.apache.tapestry.web.ServletWebResponse.getPrintWriter(
> ServletWebResponse.java:77)
> > at
> $WebResponse_106e98c0810.getPrintWriter($WebResponse_106e98c0810.java)
> > at
> $WebResponse_106e98c06f4.getPrintWriter($WebResponse_106e98c06f4.java)
> >
> > at org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse
> (ResponseRendererImpl.java:67)
> > at
> $ResponseRenderer_106e98c070e.renderResponse($ResponseRenderer_106e98c070e.java)
>
> > at org.apache.tapestry.error.ExceptionPresenterImpl.presentException
> > (ExceptionPresenterImpl.java:46)
> > ... 36 more
> >
> > am I missing something?
> > Paolo
> >
>
>