If you could send me the source code (even privately) of those two classes, I'd be interested to see. I've been working on the code for live service reloading, and though I don't think I can hit every case perfectly, I'd like to hit all the likely ones, such as whatever you've hit.
The class loader technique Tapestry uses has difficulty with access to protected (really, non-public) members (constructor, fields and methods). There's room for me to make it smarter, by doing a bit more analysis of loaded classes to see if they access non-public members of other classes (and to extend the class loading umbrella to those classes as well). On Fri, Sep 10, 2010 at 5:00 AM, Blower, Andy <andy.blo...@proquest.co.uk> wrote: > Unfortunately we've got another T5.2 migration issue that I can't figure out. > I wonder if this is to do with the service class reloading added in 5.2 - is > there a way of disabling it to check? > > I've posted the error trace below, basically a service > (ScholarUniverseSearchEngine) is trying to create a class > (ScholarUniverseResultsList) and failing because there seems to be 2 > different versions of the service in different classloaders. It's really > puzzling because this service and class is copied from another that does the > exact same thing and still works okay. I tried running it by deploying a war > to a standalone tomcat, and it's fine. It just seems to be a problem when > running from within Eclipse using runjettyrun. We'll try some more > combinations out, but if anyone can help with this it would be great. > > > ERROR [11:53:15,737] btpool0-6 > (services.TapestryModule.RequestExceptionHandler:62) - Processing of request > failed with uncaught exception: loader constraint violation: when resolving > method > "com.proquest.apps.corelib.search.impl.scholaruniverse.ScholarUniverseResultsList.<init>(Lcom/proquest/apps/corelib/search/QueryData;Ljava/lang/String;Ljava/lang/String;Lcom/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine;Lcom/proquest/apps/corelib/config/ProductConfig;)V" > the class loader (instance of > org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator$ReloadingClassLoader) > of the current class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine, > and the class loader (instance of runjettyrun/ProjectClassLoader) for > resolved class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseResultsList, > have different Class objects for the type > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine > used in the signature > java.lang.LinkageError: loader constraint violation: when resolving method > "com.proquest.apps.corelib.search.impl.scholaruniverse.ScholarUniverseResultsList.<init>(Lcom/proquest/apps/corelib/search/QueryData;Ljava/lang/String;Ljava/lang/String;Lcom/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine;Lcom/proquest/apps/corelib/config/ProductConfig;)V" > the class loader (instance of > org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator$ReloadingClassLoader) > of the current class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine, > and the class loader (instance of runjettyrun/ProjectClassLoader) for > resolved class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseResultsList, > have different Class objects for the type > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSearchEngine > used in the signature > at > com.proquest.apps.corelib.search.impl.scholaruniverse.ScholarUniverseSearchEngine.executeSearch(ScholarUniverseSearchEngine.java:146) > at > $SearchEngine_12afb45d215.executeSearch($SearchEngine_12afb45d215.java) > at > Invocation$SearchEngine$executeSearch$12afb462907.invokeDelegateMethod(Invocation$SearchEngine$executeSearch$12afb462907.java) > at > org.apache.tapestry5.ioc.internal.services.AbstractInvocation.proceed(AbstractInvocation.java:124) > at > com.proquest.apps.onesearch.stats.ProfileAdvice.advise(ProfileAdvice.java:33) > at > org.apache.tapestry5.ioc.internal.services.AbstractInvocation.proceed(AbstractInvocation.java:128) > at > $SearchEngine_12afb45d216.executeSearch($SearchEngine_12afb45d216.java) > at > $SearchEngine_12afb45cd44.executeSearch($SearchEngine_12afb45cd44.java) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseBasic.handleSearchFormSubmission(ScholarUniverseBasic.java:132) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseBasic$MethodAccess_handleSearchFormSubmission_12afb45cd45.invoke(ScholarUniverseBasic$MethodAccess_handleSearchFormSubmission_12afb45cd45.java) > at > org.apache.tapestry5.internal.transform.BaseEventHandlerMethodInvoker.invokeEventHandlerMethod(BaseEventHandlerMethodInvoker.java:52) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.invokeEventHandlers(OnEventWorker.java:157) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.advise(OnEventWorker.java:136) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:86) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseBasic.dispatchComponentEvent(ScholarUniverseBasic.java) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:942) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1132) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3000(ComponentPageElementImpl.java:72) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invoke(ComponentPageElementImpl.java:1077) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invoke(ComponentPageElementImpl.java:1074) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057) > at > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:141) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1073) > at > org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:287) > at > org.apache.tapestry5.corelib.components.Form._$advised$onAction(Form.java:548) > at > org.apache.tapestry5.corelib.components.Form$onAction$invocation_12afb463c82.invokeAdvisedMethod(Form$onAction$invocation_12afb463c82.java) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:77) > at > org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37) > at > org.apache.tapestry5.internal.transform.LogWorker$1.advise(LogWorker.java:54) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:86) > at > org.apache.tapestry5.corelib.components.Form.onAction(Form.java) > at > org.apache.tapestry5.corelib.components.Form$MethodAccess_onAction_12afb45cb89.invoke(Form$MethodAccess_onAction_12afb45cb89.java) > at > org.apache.tapestry5.internal.transform.BaseEventHandlerMethodInvoker.invokeEventHandlerMethod(BaseEventHandlerMethodInvoker.java:52) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.invokeEventHandlers(OnEventWorker.java:157) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.advise(OnEventWorker.java:136) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:86) > at > org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:950) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1132) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3000(ComponentPageElementImpl.java:72) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invoke(ComponentPageElementImpl.java:1077) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invoke(ComponentPageElementImpl.java:1074) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057) > at > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:141) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1073) > at > org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:81) > at > org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequestHandler_12afb45ccf0.java) > at > org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequestHandler_12afb45ccf0.java) > at > org.apache.tapestry5.services.TapestryModule$39.handle(TapestryModule.java:2567) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequestHandler_12afb45ccf0.java) > at > $ComponentEventRequestHandler_12afb45ccec.handle($ComponentEventRequestHandler_12afb45ccec.java) > at > org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) > at > org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) > at > $ComponentRequestHandler_12afb45cced.handleComponentEvent($ComponentRequestHandler_12afb45cced.java) > at > $ComponentRequestHandler_12afb45cacb.handleComponentEvent($ComponentRequestHandler_12afb45cacb.java) > at > org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) > at > $Dispatcher_12afb45cacc.dispatch($Dispatcher_12afb45cacc.java) > at > $Dispatcher_12afb45ca9c.dispatch($Dispatcher_12afb45ca9c.java) > at > org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:320) > at > com.proquest.apps.corelib.AppCoreLibModule$13.service(AppCoreLibModule.java:518) > at > $RequestFilter_12afb45ca9b.service($RequestFilter_12afb45ca9b.java) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > com.proquest.apps.onesearch.services.OneSearchLocalizationFilter.service(OneSearchLocalizationFilter.java:45) > at > $RequestFilter_12afb45ca9f.service($RequestFilter_12afb45ca9f.java) > at > $RequestFilter_12afb45ca97.service($RequestFilter_12afb45ca97.java) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:982) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:972) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.URLRewriterRequestFilter.service(URLRewriterRequestFilter.java:50) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > com.proquest.apps.onesearch.stats.STLRequestFilter.service(STLRequestFilter.java:50) > at > $RequestFilter_12afb45ca9e.service($RequestFilter_12afb45ca9e.java) > at > $RequestFilter_12afb45ca98.service($RequestFilter_12afb45ca98.java) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:80) > at > org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > $RequestHandler_12afb45ca91.service($RequestHandler_12afb45ca91.java) > at > org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:271) > at > org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandler_12afb45ca93.java) > at > org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) > at > $HttpServletRequestFilter_12afb45ca90.service($HttpServletRequestFilter_12afb45ca90.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandler_12afb45ca93.java) > at > com.proquest.apps.onesearch.email.EmailHttpServletRequestFilter.service(EmailHttpServletRequestFilter.java:73) > at > $HttpServletRequestFilter_12afb45ca8e.service($HttpServletRequestFilter_12afb45ca8e.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandler_12afb45ca93.java) > at > com.proquest.apps.onesearch.services.SiteRedirectHttpServletRequestFilter.service(SiteRedirectHttpServletRequestFilter.java:45) > at > $HttpServletRequestFilter_12afb45ca8d.service($HttpServletRequestFilter_12afb45ca8d.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandler_12afb45ca93.java) > at > org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:926) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandler_12afb45ca93.java) > at > $HttpServletRequestHandler_12afb45ca8a.service($HttpServletRequestHandler_12afb45ca8a.java) > at > org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722) > at > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) > at org.mortbay.jetty.Server.handle(Server.java:324) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at > org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648) > at > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) > > -- 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 --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org