You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <de...@tapestry.apache.org> on 2008/02/14 16:33:08 UTC

[jira] Commented: (TAPESTRY-2055) Problem when running 2+ tapestry web apps in same application server

    [ https://issues.apache.org/jira/browse/TAPESTRY-2055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568967#action_12568967 ] 

Howard M. Lewis Ship commented on TAPESTRY-2055:
------------------------------------------------

I would suspect that the work around here is to turn off bytecode optimization of OGNL expressions.  Is there an easy way to do that?

Also at the root of this is shared data stored inside OGNL using a static variable.  If you have moved the Tapestry and OGNL JARs outside of the WARs into a shared library, back that out.  This will allow each Tapestry application instance to have its own copy of OGNL and OGNL's static variables.

> Problem when running 2+ tapestry web apps in same application server
> --------------------------------------------------------------------
>
>                 Key: TAPESTRY-2055
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2055
>             Project: Tapestry
>          Issue Type: Bug
>    Affects Versions: 4.1.3
>         Environment: JBoss 4.2.x, Tapestry 4.1.3, MySQL5
>            Reporter: Eduardo Magdalena
>             Fix For: 4.1.6
>
>
> I have an enterprise Java Bean which feeds multiple tapestry apps. I can open a session on two apps but when I open a second session on one of them and enter on a page not previously loaded (in the first session) I get:
> On browser:
> java.lang.NullPointerException
> 	$ExceptionDisplay_50.getClientId($ExceptionDisplay_50.java)
> 	org.apache.tapestry.AbstractComponent.hashCode(AbstractComponent.java:917)
> 	java.lang.Object.toString(Object.java:219)
> 	org.apache.tapestry.AbstractComponent.toString(AbstractComponent.java:564)
> 	org.apache.tapestry.util.exception.ExceptionAnalyzer.buildDescription(ExceptionAnalyzer.java:184)
> 	org.apache.tapestry.util.exception.ExceptionAnalyzer.analyze(ExceptionAnalyzer.java:93)
> 	org.apache.tapestry.util.exception.ExceptionAnalyzer.reportException(ExceptionAnalyzer.java:379)
> 	org.apache.tapestry.ApplicationServlet.show(ApplicationServlet.java:158)
> 	org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:132)
> 	org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
> 	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> 	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> 	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
> On JBoss Console I get a thousand of stack traces (sometimes infinite), being the most relevant:
> First Stack Trace:
> 12:02:58,171 ERROR [HiveMindExpressionCompiler] Error generating OGNL getter for expression @com.indra.localiza.Restriction@hasPermission(sessionDescriptor.leve
> l, @com.indra.localiza.Restriction@ICON) with root $GestorIcons_46@3c1[GestorIcons] and body:
> { return  ($w) (com.indra.localiza.Restriction#hasPermission((($GestorIcons_46)$2).getSessionDescriptor().getLevel(), com.indra.localiza.Restriction.ICON));}
> org.apache.hivemind.ApplicationRuntimeException: Unable to add method java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class $ASTStaticMethod_1178767
> 42ab: [source error] no such class: $GestorIcons_46
>         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)
>         at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:176)
>         at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:523)
>         at ognl.Ognl.compileExpression(Ognl.java:141)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
>         at $ExpressionCache_11787674066.getCompiledExpression($ExpressionCache_11787674066.java)
>         at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
>         at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
>         at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
>         at org.apache.tapestry.enhance.EnhanceUtils.toBoolean(EnhanceUtils.java:173)
>         at $IfBean_5.getCondition($IfBean_5.java)
>         at org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:128)
>         at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:66)
>         at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
>         at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179)
>         at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539)
>         at org.apache.tapestry.html.Body.renderComponent(Body.java:38)
>         at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
>         at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179)
>         at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
>         at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
>         at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:177)
>         at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249)
>         at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)
>         at org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:151)
>         at org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)
>         at $ResponseRenderer_11787673da3.renderResponse($ResponseRenderer_11787673da3.java)
>         at org.apache.tapestry.engine.DirectService.service(DirectService.java:147)
>         at $IEngineService_11787673fb6.service($IEngineService_11787673fb6.java)
>         at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
>         at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241)
>         at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
>         at $WebRequestServicer_11787673f8d.service($WebRequestServicer_11787673f8d.java)
>         at $WebRequestServicer_11787673f89.service($WebRequestServicer_11787673f89.java)
>         at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
>         at $ServletRequestServicer_11787673f6f.service($ServletRequestServicer_11787673f6f.java)
>         at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
>         at $ServletRequestServicerFilter_11787673f6b.service($ServletRequestServicerFilter_11787673f6b.java)
>         at $ServletRequestServicer_11787673f71.service($ServletRequestServicer_11787673f71.java)
>         at org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
>         at $ServletRequestServicerFilter_11787673f69.service($ServletRequestServicerFilter_11787673f69.java)
>         at $ServletRequestServicer_11787673f71.service($ServletRequestServicer_11787673f71.java)
>         at org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
>         at $ServletRequestServicerFilter_11787673f6d.service($ServletRequestServicerFilter_11787673f6d.java)
>         at $ServletRequestServicer_11787673f71.service($ServletRequestServicer_11787673f71.java)
>         at $ServletRequestServicer_11787673dcf.service($ServletRequestServicer_11787673dcf.java)
>         at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)
>         at org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> In the Middle: 
> (This one repeats several times)
> Caused by: javassist.CannotCompileException: [source error] no such class: $Exception_47
>         at javassist.CtBehavior.setBody(CtBehavior.java:367)
>         at javassist.CtBehavior.setBody(CtBehavior.java:334)
>         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
>         ... 69 more
> 12:02:59,453 ERROR [HiveMindExpressionCompiler] Error generating OGNL getter for expression exceptions with root $ExceptionDisplay_50@6482ee45[framework:Excepti
> on/$ExceptionDisplay] and body:
> { return (($ExceptionDisplay_50)$2).getExceptions();}
> org.apache.hivemind.ApplicationRuntimeException: Unable to add method java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class $ASTProperty_117876742b3
> : [source error] no such class: $ExceptionDisplay_50
>         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)
>         at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:176)
>         at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:523)
>         at ognl.Ognl.compileExpression(Ognl.java:141)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
>         at $ExpressionCache_11787674066.getCompiledExpression($ExpressionCache_11787674066.java)
>         at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
>         at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
>         at org.apache.tapestry.components.ForBean.evaluateSourceIterator(ForBean.java:693)
>         at org.apache.tapestry.components.ForBean.getData(ForBean.java:326)
> So it fails: Tapestry, Hivemind, OGNL, JavaAssist ...
> The only solution I got so far is have a JBoss instance for each WebApp...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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