You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Syed Kazim Hussain <sk...@etilizepak.com> on 2006/01/05 09:49:38 UTC

Re: InjectState exception within activateExternalPage

I am using Tapestry 4 rc 1. encounteriing the same problem on Solaris 
server machine as posted in :

http://issues.apache.org/jira/browse/TAPESTRY-696

Strangly, its working ok on Windows development machine. However, the workaround suggested by Shawn works fine.

Kazim




Shawn Church wrote:

>Howard,
>
>Thank you very much.  This is not a show-stopper for me at the moment
>since I can get what I need through ApplicationStateManager, but I'll
>watch for a patch and attempt to reproduce the exception.
>
>Shawn
>
>
>Quoting Howard Lewis Ship <hl...@gmail.com>:
>
>  
>
>>http://issues.apache.org/jira/browse/TAPESTRY-696
>>
>>
>>On 10/7/05, Howard Lewis Ship <hl...@gmail.com> wrote:
>>    
>>
>>>It's looking to me like there's a thread synchronization problem
>>>      
>>>
>>going
>>    
>>
>>>on.  I'll be looking into it.  Add a bug, please.
>>>
>>>On 10/5/05, Bryan Dotzour <BD...@widen.com> wrote:
>>>      
>>>
>>>>We're currently trying to get a handle on the exact same problem,
>>>>        
>>>>
>>but we
>>    
>>
>>>>experience under different circumstances.
>>>>
>>>>All of our pages implement a VisitHolder interface, which injects
>>>>        
>>>>
>>the
>>    
>>
>>>>Visit. This concept was described on Howard's blog
>>>>
>>>>        
>>>>
>>(http://howardlewisship.com/blog/2005/06/annotations-bytecode-generation
>>    
>>
>>>>-mixins.html). Currently if two requests come in for the same
>>>>        
>>>>
>>page at
>>    
>>
>>>>the same time, one of the requests will receive this same stack
>>>>        
>>>>
>>trace.
>>    
>>
>>>>I agree with your assessment that this looks like a bug, but
>>>>        
>>>>
>>I'll
>>    
>>
>>>>investigate you're workaround and see if we can make that work as
>>>>        
>>>>
>>a
>>    
>>
>>>>stop-gap.
>>>>
>>>>-----Original Message-----
>>>>From: Shawn Church [mailto:shawn@boxity.com]
>>>>Sent: Tuesday, October 04, 2005 10:12 AM
>>>>To: tapestry-user@jakarta.apache.org
>>>>Subject: Re: InjectState exception within activateExternalPage
>>>>
>>>>The only solution (work-around) I could come up with for this
>>>>        
>>>>
>>problem is
>>    
>>
>>>>to replace this in my Border component:
>>>>
>>>>  @InjectState("visit")
>>>>     public abstract Visit getVisitObject();
>>>>
>>>>with this:
>>>>
>>>>   @InjectObject("infrastructure:applicationStateManager")
>>>>      public abstract ApplicationStateManager
>>>>getApplicationStateManager();
>>>>
>>>>   public Visit getVisitObject()
>>>>   {
>>>>      return (Visit) getApplicationStateManager().get("visit");
>>>>   }
>>>>
>>>>By the way, I'm using Tapestry 4 beta-9.  I assume this is a bug,
>>>>        
>>>>
>>but
>>    
>>
>>>>the work-around seems to be working for now.
>>>>
>>>>Shawn
>>>>
>>>>
>>>>Quoting Shawn Church <sh...@boxity.com>:
>>>>
>>>>        
>>>>
>>>>>I'm converting one of my Tapestry 3 apps to version 4.  Since
>>>>>          
>>>>>
>>the
>>    
>>
>>>>>AbstractPage implementation of getVisit() is deprecated, I
>>>>>          
>>>>>
>>have
>>    
>>
>>>>>refactored by pages to inject the visit as
>>>>>
>>>>>@InjectState("visit")
>>>>>  public abstract Visit getVisitObject();
>>>>>
>>>>>I'm also doing this in my Border object.  This has all been
>>>>>          
>>>>>
>>working
>>    
>>
>>>>>fine, but I'm now encountering an exception when requesting a
>>>>>          
>>>>>
>>page
>>    
>>
>>>>>using
>>>>>the external service (within activateExternalPage).
>>>>>
>>>>>The process here is basically handling a "My Account" feature:
>>>>>
>>>>>1. An outside application makes a request to a Login page (a
>>>>>          
>>>>>
>>page
>>    
>>
>>>>>which
>>>>>implements IExternalPage within the failing app).
>>>>>
>>>>>2. Within activateExternalPage, the app determines if the user
>>>>>          
>>>>>
>>is
>>    
>>
>>>>>logged
>>>>>in (by observing the Visit object).
>>>>>
>>>>>3. If logged in, activate the desired page (in this case, a
>>>>>ViewProfile
>>>>>page).
>>>>>
>>>>>I'm getting an ApplicationRuntimeException on this line:
>>>>>
>>>>>ViewProfile viewProfile = ( ViewProfile )
>>>>>cycle.getPage("ViewProfile");
>>>>>
>>>>>stating:
>>>>>
>>>>>Error: An error occured processing annotation
>>>>>@org.apache.tapestry.annotations.InjectState(value=visit) of
>>>>>          
>>>>>
>>public
>>    
>>
>>>>>abstract com.mcelroy.auth.Visit
>>>>>com.mcelroy.auth.component.Border.getVisitObject(): Property
>>>>>visitObject
>>>>>has already been accounted for by the element at Annotation
>>>>>@org.apache.tapestry.annotations.InjectState(value=visit) of
>>>>>          
>>>>>
>>public
>>    
>>
>>>>>abstract com.mcelroy.auth.Visit
>>>>>com.mcelroy.auth.component.Border.getVisitObject().
>>>>>
>>>>>Am I doing something wrong here?  I can transition from
>>>>>          
>>>>>
>>page-to-page
>>    
>>
>>>>>without any trouble as long as I'm not entering the app through
>>>>>          
>>>>>
>>the
>>    
>>
>>>>>external service.
>>>>>
>>>>>In case it's useful, here's the full stack trace:
>>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentS
>>    
>>
>>>>pecification.java:674)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(C
>>    
>>
>>>>omponentSpecification.java:645)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhan
>>    
>>
>>>>cement(InjectStateAnnotationWorker.java:49)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho
>>    
>>
>>>>dEnhancement(AnnotationEnhancementWorker.java:125)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho
>>    
>>
>>>>dEnhancement(AnnotationEnhancementWorker.java:108)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhan
>>    
>>
>>>>cement(AnnotationEnhancementWorker.java:68)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$EnhancementWorker_106b7b9f8bb.performEnhancement($EnhancementWorker_106
>>    
>>
>>>>b7b9f8bb.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$EnhancementWorker_106b7b9f8bd.performEnhancement($EnhancementWorker_106
>>    
>>
>>>>b7b9f8bd.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$EnhancementWorker_106b7b9f89d.performEnhancement($EnhancementWorker_106
>>    
>>
>>>>b7b9f89d.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getCom
>>    
>>
>>>>ponentConstructor(ComponentConstructorFactoryImpl.java:79)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ComponentConstructorFactory_106b7b9f888.getComponentConstructor($Compon
>>    
>>
>>>>entConstructorFactory_106b7b9f888.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.
>>    
>>
>>>>java:565)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoad
>>    
>>
>>>>er.java:515)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IPageLoader_106b7b9f882.createImplicitComponent($IPageLoader_106b7b9f88
>>    
>>
>>>>2.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IPageLoader_106b7b9f883.createImplicitComponent($IPageLoader_106b7b9f88
>>    
>>
>>>>3.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.createImp
>>    
>>
>>>>licitComponent(ComponentTemplateLoaderLogic.java:218)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(C
>>    
>>
>>>>omponentTemplateLoaderLogic.java:172)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(C
>>    
>>
>>>>omponentTemplateLoaderLogic.java:111)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.loadTempl
>>    
>>
>>>>ate(ComponentTemplateLoaderLogic.java:88)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTempla
>>    
>>
>>>>te(ComponentTemplateLoaderImpl.java:60)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ComponentTemplateLoader_106b7b9f88c.loadTemplate($ComponentTemplateLoad
>>    
>>
>>>>er_106b7b9f88c.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent(PageLoa
>>    
>>
>>>>der.java:671)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.BaseComponent.readTemplate(BaseComponent.java:77)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.BaseComponent.finishLoad(BaseComponent.java:107)
>>    
>>
>>>>>    * $ViewProfile_41.finishLoad($ViewProfile_41.java)
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.ja
>>    
>>
>>>>va:473)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:642)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IPageLoader_106b7b9f882.loadPage($IPageLoader_106b7b9f882.java)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IPageLoader_106b7b9f883.loadPage($IPageLoader_106b7b9f883.java)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:118)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IPageSource_106b7b9f7ed.getPage($IPageSource_106b7b9f7ed.java)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:265)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:248)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>com.mcelroy.auth.pages.Login.activateExternalPage(Login.java:216)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.engine.ExternalService.service(ExternalService.java:
>>    
>>
>>>>160)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$IEngineService_106b7b9f87a.service($IEngineService_106b7b9f87a.java)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(Engine
>>    
>>
>>>>ServiceOuterProxy.java:65)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:24
>>    
>>
>>>>8)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeE
>>    
>>
>>>>ngineTerminator.java:60)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$WebRequestServicer_106b7b9f84d.service($WebRequestServicer_106b7b9f84d.
>>    
>>
>>>>java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCa
>>    
>>
>>>>chingFilter.java:48)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$WebRequestServicerFilter_106b7b9f84f.service($WebRequestServicerFilter_
>>    
>>
>>>>106b7b9f84f.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$WebRequestServicer_106b7b9f851.service($WebRequestServicer_106b7b9f851.
>>    
>>
>>>>java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$WebRequestServicer_106b7b9f849.service($WebRequestServicer_106b7b9f849.
>>    
>>
>>>>java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.servi
>>    
>>
>>>>ce(WebRequestServicerPipelineBridge.java:56)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicer_106b7b9f82d.service($ServletRequestServicer_106b
>>    
>>
>>>>7b9f82d.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.request.DecodedRequestInjector.service(DecodedReques
>>    
>>
>>>>tInjector.java:55)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicerFilter_106b7b9f829.service($ServletRequestService
>>    
>>
>>>>rFilter_106b7b9f829.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b
>>    
>>
>>>>7b9f82f.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDe
>>    
>>
>>>>coderFilter.java:52)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicerFilter_106b7b9f827.service($ServletRequestService
>>    
>>
>>>>rFilter_106b7b9f827.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b
>>    
>>
>>>>7b9f82f.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequ
>>    
>>
>>>>estEncoding.java:53)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicerFilter_106b7b9f82b.service($ServletRequestService
>>    
>>
>>>>rFilter_106b7b9f82b.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b
>>    
>>
>>>>7b9f82f.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>$ServletRequestServicer_106b7b9f821.service($ServletRequestServicer_106b
>>    
>>
>>>>7b9f821.java)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java
>>    
>>
>>>>:141)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:97)
>>    
>>
>>>>>    *
>>>>>          
>>>>>
>>javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>    
>>
>>>>>    *
>>>>>          
>>>>>
>>javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationH
>>    
>>
>>>>andler.java:475)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
>>    
>>
>>>>>    *
>>>>>          
>>>>>
>>org.mortbay.http.HttpContext.handle(HttpContext.java:1565)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationCon
>>    
>>
>>>>text.java:635)
>>>>        
>>>>
>>>>>    *
>>>>>          
>>>>>
>>org.mortbay.http.HttpContext.handle(HttpContext.java:1517)
>>    
>>
>>>>>    * org.mortbay.http.HttpServer.service(HttpServer.java:954)
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244
>>    
>>
>>>>)
>>>>        
>>>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
>>    
>>
>>>>>    *
>>>>>
>>>>>          
>>>>>
>>org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
>>    
>>
>>>>>Thanks,
>>>>>Shawn
>>>>>
>>>>>
>>>>>          
>>>>>
>>>>
>>>>
>>>>
>>>>        
>>>>
>>---------------------------------------------------------------------
>>    
>>
>>>>To unsubscribe, e-mail:
>>>>        
>>>>
>>tapestry-user-unsubscribe@jakarta.apache.org
>>    
>>
>>>>For additional commands, e-mail:
>>>>        
>>>>
>>tapestry-user-help@jakarta.apache.org
>>    
>>
>>>>
>>>>        
>>>>
>>---------------------------------------------------------------------
>>    
>>
>>>>To unsubscribe, e-mail:
>>>>        
>>>>
>>tapestry-user-unsubscribe@jakarta.apache.org
>>    
>>
>>>>For additional commands, e-mail:
>>>>        
>>>>
>>tapestry-user-help@jakarta.apache.org
>>    
>>
>>>>        
>>>>
>>>--
>>>Howard M. Lewis Ship
>>>Independent J2EE / Open-Source Java Consultant
>>>Creator, Jakarta Tapestry
>>>Creator, Jakarta HiveMind
>>>
>>>Professional Tapestry training, mentoring, support
>>>and project work.  http://howardlewisship.com
>>>
>>>      
>>>
>>--
>>Howard M. Lewis Ship
>>Independent J2EE / Open-Source Java Consultant
>>Creator, Jakarta Tapestry
>>Creator, Jakarta HiveMind
>>
>>Professional Tapestry training, mentoring, support
>>and project work.  http://howardlewisship.com
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail:
>>tapestry-user-help@jakarta.apache.org
>>
>>
>>    
>>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>  
>


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