You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Tony Nelson <tn...@starpoint.com> on 2011/11/01 22:37:06 UTC

5.3-rc-2 Exception

I have a very simple page that does nothing but redirect to another page.  It works fine under jetty, but fails under tomcat 6.0.33.

Any help would be greatly appreciated.

My page class is:

package com.starpoint.instihire.pages.view;

import com.starpoint.instihire.pages.user.ViewUser;
import org.apache.tapestry5.annotations.PageActivationContext;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.PageRenderLinkSource;
import org.apache.tapestry5.services.Response;

import java.io.IOException;

/**
 */
public class User {

    @Inject
    private Response response;

    @Inject
    private PageRenderLinkSource linkSource;

    @PageActivationContext
    private Long userId;

    void setupRender() {
        try {
            response.sendRedirect(linkSource.createPageRenderLinkWithContext(ViewUser.class, userId));
        } catch (IOException ioe) {
            // shrug?
        }

    }
}


The exception I get is:
java.lang.NullPointerException
	org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl.isCompressable(CompressionAnalyzerImpl.java:34)
	$CompressionAnalyzer_195e0b3cd2a3f5.isCompressable(Unknown Source)
	org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl.isCompressable(ResponseCompressionAnalyzerImpl.java:65)
	$ResponseCompressionAnalyzer_195e0b3cd2a3ec.isCompressable(Unknown Source)
	org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:77)
	org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
	org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
	sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
	sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
	sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
	java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
	java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
	java.io.BufferedWriter.write(BufferedWriter.java:212)
	java.io.PrintWriter.write(PrintWriter.java:412)
	java.io.PrintWriter.write(PrintWriter.java:429)
	java.io.PrintWriter.print(PrintWriter.java:559)
	org.apache.tapestry5.dom.Text.toMarkup(Text.java:59)
	org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
	org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
	org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
	org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
	org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
	org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
	org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
	org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
	org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
	org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
	org.apache.tapestry5.dom.Document.toMarkup(Document.java:166)
	org.apache.tapestry5.dom.Node.toMarkup(Node.java:79)
	org.apache.tapestry5.internal.services.MarkupWriterImpl.toMarkup(MarkupWriterImpl.java:56)
	org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:73)
	$PageResponseRenderer_195e0b3cd2a4b2.renderPageResponse(Unknown Source)
	org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:85)
	$RequestExceptionHandler_195e0b3cd2a3f9.handleRequestException(Unknown Source)
	org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
	$RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
	org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
	$RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
	org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
	$RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
	org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
	$RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
	org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
	org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
	org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
	org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
	$RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
	$RequestHandler_195e0b3cd2a3ef.service(Unknown Source)
	org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
	org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
	$HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
	org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
	$HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
	org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:26)
	$HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
	org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
	$HttpServletRequestFilter_195e0b3cd2a3ed.service(Unknown Source)
	$HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
	org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
	$HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
	$HttpServletRequestHandler_195e0b3cd2a3e6.service(Unknown Source)
	org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)




Re: 5.3-rc-2 Exception

Posted by Howard Lewis Ship <hl...@gmail.com>.
I'm not quite clear on what happened here, as in, why it works in some
cases and not in others.

It is not the expected way.

What's happening is that you are explicitly sending a response ...
from the middle of your render.  Tapestry continues to render DOM
nodes, then attempts to stream those back to the client, which is
where things go wrong, since the response has already been sent.

The best approach here is to have your activate event handler simply
return the Link object.

See:

http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/TapestryModule.html#contributeComponentEventResultProcessor(org.apache.tapestry5.services.ComponentEventResultProcessor,
org.apache.tapestry5.ioc.MappedConfiguration)




On Tue, Nov 1, 2011 at 2:37 PM, Tony Nelson <tn...@starpoint.com> wrote:
> I have a very simple page that does nothing but redirect to another page.  It works fine under jetty, but fails under tomcat 6.0.33.
>
> Any help would be greatly appreciated.
>
> My page class is:
>
> package com.starpoint.instihire.pages.view;
>
> import com.starpoint.instihire.pages.user.ViewUser;
> import org.apache.tapestry5.annotations.PageActivationContext;
> import org.apache.tapestry5.ioc.annotations.Inject;
> import org.apache.tapestry5.services.PageRenderLinkSource;
> import org.apache.tapestry5.services.Response;
>
> import java.io.IOException;
>
> /**
>  */
> public class User {
>
>    @Inject
>    private Response response;
>
>    @Inject
>    private PageRenderLinkSource linkSource;
>
>    @PageActivationContext
>    private Long userId;
>
>    void setupRender() {
>        try {
>            response.sendRedirect(linkSource.createPageRenderLinkWithContext(ViewUser.class, userId));
>        } catch (IOException ioe) {
>            // shrug?
>        }
>
>    }
> }
>
>
> The exception I get is:
> java.lang.NullPointerException
>        org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl.isCompressable(CompressionAnalyzerImpl.java:34)
>        $CompressionAnalyzer_195e0b3cd2a3f5.isCompressable(Unknown Source)
>        org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl.isCompressable(ResponseCompressionAnalyzerImpl.java:65)
>        $ResponseCompressionAnalyzer_195e0b3cd2a3ec.isCompressable(Unknown Source)
>        org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:77)
>        org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
>        org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
>        sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
>        sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
>        sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
>        java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
>        java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
>        java.io.BufferedWriter.write(BufferedWriter.java:212)
>        java.io.PrintWriter.write(PrintWriter.java:412)
>        java.io.PrintWriter.write(PrintWriter.java:429)
>        java.io.PrintWriter.print(PrintWriter.java:559)
>        org.apache.tapestry5.dom.Text.toMarkup(Text.java:59)
>        org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
>        org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
>        org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
>        org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
>        org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
>        org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
>        org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
>        org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
>        org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:901)
>        org.apache.tapestry5.dom.Element.toMarkup(Element.java:390)
>        org.apache.tapestry5.dom.Document.toMarkup(Document.java:166)
>        org.apache.tapestry5.dom.Node.toMarkup(Node.java:79)
>        org.apache.tapestry5.internal.services.MarkupWriterImpl.toMarkup(MarkupWriterImpl.java:56)
>        org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:73)
>        $PageResponseRenderer_195e0b3cd2a4b2.renderPageResponse(Unknown Source)
>        org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:85)
>        $RequestExceptionHandler_195e0b3cd2a3f9.handleRequestException(Unknown Source)
>        org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
>        $RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
>        org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
>        $RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
>        org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
>        $RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
>        org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
>        $RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
>        org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
>        org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
>        org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>        org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
>        $RequestHandler_195e0b3cd2a3fc.service(Unknown Source)
>        $RequestHandler_195e0b3cd2a3ef.service(Unknown Source)
>        org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
>        org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
>        $HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
>        org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
>        $HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
>        org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:26)
>        $HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
>        org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>        $HttpServletRequestFilter_195e0b3cd2a3ed.service(Unknown Source)
>        $HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
>        org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
>        $HttpServletRequestHandler_195e0b3cd2a3f1.service(Unknown Source)
>        $HttpServletRequestHandler_195e0b3cd2a3e6.service(Unknown Source)
>        org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
>
>
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org