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

Reply via email to