You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Radek Terber <ls...@post.cz> on 2010/06/07 22:13:40 UTC

NPE in afterRender method in Tomcat

Hi

I have such problem: I have quite simple T5 application - (T5 + 
hibernate), currently compiled under T 5.1.0.5. When I run it under 
Jetty (ver. 8.0.0), it runs fine.
But when I try it to start under Tomcat, I get NullPointerException that 
(probably) indicates the underline request is null.
I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure" 
installations - with no aditional libraries.
It runs under Java 6.18 on Win7, the same problem in on Linux and Java 6.16.
I could post application's war somewhere, but it is quite big (cca 28M 
including libraries), ant it requires our application server running 
anywhere in LAN to run.

Here it the eception:
-------------------
[ERROR] TapestryModule.RequestExceptionHandler Processing of request 
failed with uncaught exception: Render queue error in AfterRender[Index
:layout.loginform]: org.apache.tapestry5.ioc.internal.util.TapestryException
org.apache.tapestry5.internal.services.RenderQueueException: Render 
queue error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
.ioc.internal.util.TapestryException [at 
classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
         at 
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
         at 
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
... (I deleted it) ...
         at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at 
classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
         at 
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
         ... 68 more
Caused by: java.lang.NullPointerException
         at 
org.apache.catalina.connector.Request.getAttribute(Request.java:877)
         at 
org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
         at 
cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
         at 
cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
         at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
         ... 72 more


The code fragment cause it:
-------------------------------------------------------
     @Inject
     private RenderSupport rsup;

     @Inject
     private Request request;

     @AfterRender
     public void afterRender(MarkupWriter wr) {
          boolean requireLogin = 
request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // 
here the NPE is thrown, but the "request" is not null
         if (requireLogin) {
             rsup.addScript("$j(function() {");
             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\", 
\"modal\", false);");
             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
             rsup.addScript("});");
         }
     }

-------------------------------------------------------

Thanks for any ideas.
Radek



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


Re: NPE in afterRender method in Tomcat

Posted by Radek Terber <ls...@post.cz>.
I'm vwr sorry, I'm stupid.The constant Constants.REQUIRED_LOGIN_RQATR 
was null.
But I'm surprised the Tomcat does not provide any reasonable message.


Dne 7.6.2010 22:13, Radek Terber napsal(a):
> Hi
>
> I have such problem: I have quite simple T5 application - (T5 + 
> hibernate), currently compiled under T 5.1.0.5. When I run it under 
> Jetty (ver. 8.0.0), it runs fine.
> But when I try it to start under Tomcat, I get NullPointerException 
> that (probably) indicates the underline request is null.
> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure" 
> installations - with no aditional libraries.
> It runs under Java 6.18 on Win7, the same problem in on Linux and Java 
> 6.16.
> I could post application's war somewhere, but it is quite big (cca 28M 
> including libraries), ant it requires our application server running 
> anywhere in LAN to run.
>
> Here it the eception:
> -------------------
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request 
> failed with uncaught exception: Render queue error in AfterRender[Index
> :layout.loginform]: 
> org.apache.tapestry5.ioc.internal.util.TapestryException
> org.apache.tapestry5.internal.services.RenderQueueException: Render 
> queue error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
> .ioc.internal.util.TapestryException [at 
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>         at 
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86) 
>
>         at 
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121) 
>
> ... (I deleted it) ...
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException 
> [at classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 
> 25]
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374) 
>
>         at 
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74) 
>
>         ... 68 more
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>         at 
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263) 
>
>         at 
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127) 
>
>         at 
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164) 
>
>         at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933) 
>
>         ... 72 more
>
>
> The code fragment cause it:
> -------------------------------------------------------
>     @Inject
>     private RenderSupport rsup;
>
>     @Inject
>     private Request request;
>
>     @AfterRender
>     public void afterRender(MarkupWriter wr) {
>          boolean requireLogin = 
> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        
> // here the NPE is thrown, but the "request" is not null
>         if (requireLogin) {
>             rsup.addScript("$j(function() {");
>             
> rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\", \"modal\", 
> false);");
>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>             rsup.addScript("});");
>         }
>     }
>
> -------------------------------------------------------
>
> Thanks for any ideas.
> Radek
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


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


Re: NPE in afterRender method in Tomcat

Posted by Radek Terber <ls...@post.cz>.
No, the app is single thread, quite "clear", no experiments...
Here is the "self contained" variant of war (with no dependencies to 
oour app server):
http://www.gapo.cz/downloads/genusinum.war

I guess to some library which the application is depend on (in 
combination with Tomcat libraries ??), but I have no tools and 
experiences to deterrmine it.

Dne 7.6.2010 22:58, Howard Lewis Ship napsal(a):
> Caused by: java.lang.NullPointerException
>         at
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>         at
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>
> That's really showing that it's gone beyond the Tapestry code and back into
> the Tomcat (catalina) code. Are you doing something tricky with threads,
> like trying to do part of the render is a background thread?
>
> You'll probably need to single-step down ingo the catalina code to see
> what's exactly going on.  Not enough information here to diagnose.
>
> On Mon, Jun 7, 2010 at 1:13 PM, Radek Terber<ls...@post.cz>  wrote:
>
>    
>> Hi
>>
>> I have such problem: I have quite simple T5 application - (T5 + hibernate),
>> currently compiled under T 5.1.0.5. When I run it under Jetty (ver. 8.0.0),
>> it runs fine.
>> But when I try it to start under Tomcat, I get NullPointerException that
>> (probably) indicates the underline request is null.
>> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure"
>> installations - with no aditional libraries.
>> It runs under Java 6.18 on Win7, the same problem in on Linux and Java
>> 6.16.
>> I could post application's war somewhere, but it is quite big (cca 28M
>> including libraries), ant it requires our application server running
>> anywhere in LAN to run.
>>
>> Here it the eception:
>> -------------------
>> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
>> with uncaught exception: Render queue error in AfterRender[Index
>> :layout.loginform]:
>> org.apache.tapestry5.ioc.internal.util.TapestryException
>> org.apache.tapestry5.internal.services.RenderQueueException: Render queue
>> error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
>> .ioc.internal.util.TapestryException [at
>> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>>         at
>> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
>>         at
>> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
>> ... (I deleted it) ...
>>         at java.lang.Thread.run(Thread.java:619)
>> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at
>> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
>>         at
>> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
>>         ... 68 more
>> Caused by: java.lang.NullPointerException
>>         at
>> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>>         at
>> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>>         at
>> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
>>         at
>> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
>>         at
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
>>         ... 72 more
>>
>>
>> The code fragment cause it:
>> -------------------------------------------------------
>>     @Inject
>>     private RenderSupport rsup;
>>
>>     @Inject
>>     private Request request;
>>
>>     @AfterRender
>>     public void afterRender(MarkupWriter wr) {
>>          boolean requireLogin =
>> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // here
>> the NPE is thrown, but the "request" is not null
>>         if (requireLogin) {
>>             rsup.addScript("$j(function() {");
>>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\",
>> \"modal\", false);");
>>             rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>>             rsup.addScript("});");
>>         }
>>     }
>>
>> -------------------------------------------------------
>>
>> Thanks for any ideas.
>> Radek
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>>      
>
>    


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


Re: NPE in afterRender method in Tomcat

Posted by Howard Lewis Ship <hl...@gmail.com>.
Caused by: java.lang.NullPointerException
       at
org.apache.catalina.connector.Request.getAttribute(Request.java:877)
       at
org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)

That's really showing that it's gone beyond the Tapestry code and back into
the Tomcat (catalina) code. Are you doing something tricky with threads,
like trying to do part of the render is a background thread?

You'll probably need to single-step down ingo the catalina code to see
what's exactly going on.  Not enough information here to diagnose.

On Mon, Jun 7, 2010 at 1:13 PM, Radek Terber <ls...@post.cz> wrote:

> Hi
>
> I have such problem: I have quite simple T5 application - (T5 + hibernate),
> currently compiled under T 5.1.0.5. When I run it under Jetty (ver. 8.0.0),
> it runs fine.
> But when I try it to start under Tomcat, I get NullPointerException that
> (probably) indicates the underline request is null.
> I tested it under Tomcat 6.0.18, 6.0.20 and 6.0.26. Tomcats was "pure"
> installations - with no aditional libraries.
> It runs under Java 6.18 on Win7, the same problem in on Linux and Java
> 6.16.
> I could post application's war somewhere, but it is quite big (cca 28M
> including libraries), ant it requires our application server running
> anywhere in LAN to run.
>
> Here it the eception:
> -------------------
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
> with uncaught exception: Render queue error in AfterRender[Index
> :layout.loginform]:
> org.apache.tapestry5.ioc.internal.util.TapestryException
> org.apache.tapestry5.internal.services.RenderQueueException: Render queue
> error in AfterRender[Index:layout.loginform]: org.apache.tapestry5
> .ioc.internal.util.TapestryException [at
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>        at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
>        at
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
> ... (I deleted it) ...
>        at java.lang.Thread.run(Thread.java:619)
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException [at
> classpath:cz/gapo/weby/jmenovky/components/layout/Layout.tml, line 25]
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.render(ComponentPageElementImpl.java:374)
>        at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
>        ... 68 more
> Caused by: java.lang.NullPointerException
>        at
> org.apache.catalina.connector.Request.getAttribute(Request.java:877)
>        at
> org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:263)
>        at
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java:127)
>        at
> cz.gapo.webapps.common.t5.components.LoginForm.afterRender(LoginForm.java)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AfterRenderPhase.invokeComponent(ComponentPageElementImpl.java:369)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
>        at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
>        ... 72 more
>
>
> The code fragment cause it:
> -------------------------------------------------------
>    @Inject
>    private RenderSupport rsup;
>
>    @Inject
>    private Request request;
>
>    @AfterRender
>    public void afterRender(MarkupWriter wr) {
>         boolean requireLogin =
> request.getAttribute(Constants.REQUIRED_LOGIN_RQATR) != null;        // here
> the NPE is thrown, but the "request" is not null
>        if (requireLogin) {
>            rsup.addScript("$j(function() {");
>            rsup.addScript("$j(\"#loginFormDialog\").dialog(\"option\",
> \"modal\", false);");
>            rsup.addScript("$j(\"#loginFormDialog\").dialog(\"open\");");
>            rsup.addScript("});");
>        }
>    }
>
> -------------------------------------------------------
>
> Thanks for any ideas.
> Radek
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
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