[ 
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 @[EMAIL PROTECTED](sessionDescriptor.leve
> l, @[EMAIL PROTECTED]) with root [EMAIL PROTECTED] 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 [EMAIL PROTECTED]: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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to