This looks very similar to a problem we encountered with disable-caching=true and running parallel queries (such as when a resulting HTML page contained multiple embedded asset requests, or AJAX type requests).
Basically, if two queries run in parallel and disable-caching is true, then when the first one completes all caches will be cleared. If the second query is still running and dependent on caches, it will blow up. I found some spots in the Component enhancement pipeline that, if they found something cached at the beginning of the request, would throw like this later after the cache had been cleared. Our problem was Annotation related, but it was a @Parameter annotation that was blowing up for us. I actually tracked down the specific cache that was causing the problem, but that was a few months ago and I can't remember the specifics. We've stopped using the disable-cache mode, so I haven't seen this in a while, but if I find some time later I can redo the investigation...shouldn't take more than 30 minutes. jeff -----Original Message----- From: Chris Chiappone [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 31, 2006 11:26 AM To: Tapestry users Subject: Re: BindingException Issues more prominent with annotations I'm still trying to figure this out. Could this problem be associated when disable-caching=true? On 1/29/06, Chris Chiappone <[EMAIL PROTECTED]> wrote: > New JIRA created: > > https://issues.apache.org/jira/browse/TAPESTRY-848 > > On 1/29/06, Howard Lewis Ship <[EMAIL PROTECTED]> wrote: > > I don't have a test for this case, so it would certainly be a bug. > > Based on how the code is organized, I can't see how this could happen > > (confusion between the page and component annotations). Each > > "enhancement" of a class (page or component) gets its own instance of > > EnhancementOperationImpl, which is where these checks originate. > > > > ComponentConstructorFactoryImpl.getComponentConstructor() is > > synchronized, I believe. I just can't see how page and component class > > enhancement could interfere with each other, but that's the nature of > > bugs. > > > > Have you created a JIRA issue (or re-opened the old one)? > > > > On 1/28/06, Chris Chiappone <[EMAIL PROTECTED]> wrote: > > > I'm still curious if someone can confirm this. Is it true that you > > > cannot use the same named property in a page and a component? That > > > doing this could cause the binding exceptions that I have been > > > getting?? > > > > > > On 1/27/06, Chris Chiappone <[EMAIL PROTECTED]> wrote: > > > > It looks like I can reproduce this issue easily. For instance say I > > > > have a page that contains: > > > > > > > > @InjectState("visit") > > > > public abstract Visit getVisitObj(); > > > > > > > > And have the exact same getter (annotation or not) in my component: > > > > > > > > public abstract Visit getVisitObj(); > > > > > > > > The binding exception seems to occur. > > > > > > > > Does this seem like correct behavior for tapestry? I do this quite > > > > often in my components because at times the page may not have the > > > > visit or some other object that the page has, but other times it may. > > > > > > > > Thoughts and help greatly appreciated > > > > > > > > > > > > > > > > On 1/27/06, Chris Chiappone <[EMAIL PROTECTED]> wrote: > > > > > At first I thought I could work around these issues but they seem to > > > > > be popping up more and more throughout my application. Its really > > > > > becoming an issue for me. > > > > > > > > > > Ever since I have moved from .page and .jwc files to annotations I get > > > > > these exceptions more often. > > > > > > > > > > I don't believe I am doing anything wrong with these annotations. As > > > > > you can see by the following one I have just declared a DelegateBean > > > > > in my class. Using > > > > > > > > > > @Bean(SimpleValidationDeleage) > > > > > public abstract SimpleValidationDelegate getDelegate(); > > > > > > > > > > That same Delegate is used on mulitple pages and in components. From > > > > > what I understand this should be acceptable. > > > > > > > > > > This issue also has sprung up on my declaring the same Persistent > > > > > property on different pages or components using the @Persist > > > > > annotation. > > > > > > > > > > I didn't run into these problems before I used annotations. I'd also > > > > > hate to have to go back to .page and .jwc files since there are so > > > > > many files that I've changed. > > > > > > > > > > Here is an one of the exceptions: > > > > > > > > > > Exception invoking listener method searchLinkListener of component > > > > > SearchResults/border.search: Error: An error occured processing > > > > > annotation @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate(): Bean delegate has already > > > > > been declared (at Annotation > > > > > @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate()). > > > > > binding: [EMAIL PROTECTED] > > > > > parameter listener, component=SearchResults/border.search, > > > > > methodName=searchLinkListener, > > > > > location=context:/WEB-INF/BasicSearch.html, line 16] > > > > > component: [EMAIL PROTECTED]/border.search] > > > > > location: context:/WEB-INF/BasicSearch.html, line 16 > > > > > 11 <br> > > > > > 12 <input jwcid="companyField" > > > > > 13 autocomplete="off" size="20" id="txt1" /> <br> > > > > > 14 <input jwcid="@Submit" name="Submit" label="message:submit" /></form> > > > > > 15 > > > > > 16 <a jwcid="@DirectLink" listener="listener:searchLinkListener"> > > > > > 17 » <span key="advanced">Advanced</span> > > > > > 18 </a> > > > > > 19 </div> > > > > > 20 </td> > > > > > 21 </tr> > > > > > > > > > > > > > > > org.apache.hivemind.ApplicationRuntimeException > > > > > Error: An error occured processing annotation > > > > > @org.apache.tapestry.annotations.Bean(value=class > > > > > util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of > > > > > public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate(): Bean delegate has already > > > > > been declared (at Annotation > > > > > @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate()). > > > > > location: Annotation @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate() > > > > > > > > > > org.apache.hivemind.ApplicationRuntimeException > > > > > Bean delegate has already been declared (at Annotation > > > > > @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate()). > > > > > location: Annotation @org.apache.tapestry.annotations.Bean(value=class > > > > > view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) > > > > > of public abstract view.util.SimpleValidationDelegate > > > > > view.components.BasicSearch.getDelegate() > > > > > Stack Trace: > > > > > org.apache.tapestry.spec.ComponentSpecification.addBeanSpecification(Com ponentSpecification.java:410) > > > > > org.apache.tapestry.annotations.BeanAnnotationWorker.performEnhancement( BeanAnnotationWorker.java:64) > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho dEnhancement(AnnotationEnhancementWorker.java:142) > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho dEnhancement(AnnotationEnhancementWorker.java:110) > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhan cement(AnnotationEnhancementWorker.java:70) > > > > > $EnhancementWorker_1090cd8cc4b.performEnhancement($EnhancementWorker_109 0cd8cc4b.java) > > > > > $EnhancementWorker_1090cd8cc4d.performEnhancement($EnhancementWorker_109 0cd8cc4d.java) > > > > > $EnhancementWorker_1090cd8cc2d.performEnhancement($EnhancementWorker_109 0cd8cc2d.java) > > > > > org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getCom ponentConstructor(ComponentConstructorFactoryImpl.java:97) > > > > > $ComponentConstructorFactory_1090cd8cc1a.getComponentConstructor($Compon entConstructorFactory_1090cd8cc1a.java) > > > > > org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader. java:531) > > > > > org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoad er.java:481) > > > > > > > > > > > > > > > > > > > > -- > > > > > ~chris > > > > > > > > > > > > > > > > > -- > > > > ~chris > > > > > > > > > > > > > -- > > > ~chris > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > -- > > 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: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > ~chris > -- ~chris --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
