Thank you Jim - that did the trick.
> -----Original Message----- > From: Jim O'Callaghan [mailto:jc1000...@yahoo.co.uk] > Sent: 10 September 2010 14:45 > To: 'Tapestry users' > Subject: RE: [T5.2] Classloader problem with a service > > Andy, > > I haven't tried this but apparently: > > public static void bind(ServiceBinder binder) { > binder.bind(MyInterface.class, > MyImplementation.class).preventReloading(); > } > > ... should work - referenced here: > http://tapestry.markmail.org/message/honjlvrqljdjparp?q=service+reload+ > disab > le > > Regards, > Jim. > -----Original Message----- > From: Blower, Andy [mailto:andy.blo...@proquest.co.uk] > Sent: 10 September 2010 13:00 > To: 'Tapestry users' > Subject: [T5.2] Classloader problem with a service > > 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.ScholarUniverseR > esult > sList.<init>(Lcom/proquest/apps/corelib/search/QueryData;Ljava/lang/Str > ing;L > java/lang/String;Lcom/proquest/apps/corelib/search/impl/scholaruniverse > /Scho > larUniverseSearchEngine;Lcom/proquest/apps/corelib/config/ProductConfig > ;)V" > the class loader (instance of > org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator$Reloa > dingC > lassLoader) of the current class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSe > archE > ngine, and the class loader (instance of > runjettyrun/ProjectClassLoader) for > resolved class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseRe > sults > List, have different Class objects for the type > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSe > archE > ngine used in the signature > java.lang.LinkageError: loader constraint violation: when resolving > method > "com.proquest.apps.corelib.search.impl.scholaruniverse.ScholarUniverseR > esult > sList.<init>(Lcom/proquest/apps/corelib/search/QueryData;Ljava/lang/Str > ing;L > java/lang/String;Lcom/proquest/apps/corelib/search/impl/scholaruniverse > /Scho > larUniverseSearchEngine;Lcom/proquest/apps/corelib/config/ProductConfig > ;)V" > the class loader (instance of > org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator$Reloa > dingC > lassLoader) of the current class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSe > archE > ngine, and the class loader (instance of > runjettyrun/ProjectClassLoader) for > resolved class, > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseRe > sults > List, have different Class objects for the type > com/proquest/apps/corelib/search/impl/scholaruniverse/ScholarUniverseSe > archE > ngine used in the signature > at > com.proquest.apps.corelib.search.impl.scholaruniverse.ScholarUniverseSe > archE > ngine.executeSearch(ScholarUniverseSearchEngine.java:146) > at > $SearchEngine_12afb45d215.executeSearch($SearchEngine_12afb45d215.java) > at > Invocation$SearchEngine$executeSearch$12afb462907.invokeDelegateMethod( > Invoc > ation$SearchEngine$executeSearch$12afb462907.java) > at > org.apache.tapestry5.ioc.internal.services.AbstractInvocation.proceed(A > bstra > ctInvocation.java:124) > at > com.proquest.apps.onesearch.stats.ProfileAdvice.advise(ProfileAdvice.ja > va:33 > ) > at > org.apache.tapestry5.ioc.internal.services.AbstractInvocation.proceed(A > bstra > ctInvocation.java:128) > at > $SearchEngine_12afb45d216.executeSearch($SearchEngine_12afb45d216.java) > at > $SearchEngine_12afb45cd44.executeSearch($SearchEngine_12afb45cd44.java) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseB > asic. > handleSearchFormSubmission(ScholarUniverseBasic.java:132) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseB > asic$ > MethodAccess_handleSearchFormSubmission_12afb45cd45.invoke(ScholarUnive > rseBa > sic$MethodAccess_handleSearchFormSubmission_12afb45cd45.java) > at > org.apache.tapestry5.internal.transform.BaseEventHandlerMethodInvoker.i > nvoke > EventHandlerMethod(BaseEventHandlerMethodInvoker.java:52) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.invokeEventHand > lers( > OnEventWorker.java:157) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.advise(OnEventW > orker > .java:136) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocatio > n.pro > ceed(AbstractComponentMethodInvocation.java:86) > at > com.proquest.apps.onesearch.components.scholaruniverse.ScholarUniverseB > asic. > dispatchComponentEvent(ScholarUniverseBasic.java) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispat > chEve > nt(ComponentPageElementImpl.java:942) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.proces > sEven > tTriggering(ComponentPageElementImpl.java:1132) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access > $3000 > (ComponentPageElementImpl.java:72) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invo > ke(Co > mponentPageElementImpl.java:1077) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invo > ke(Co > mponentPageElementImpl.java:1074) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(Operation > Track > erImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerT > hread > OperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java > :1057 > ) > at > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesIm > pl.in > voke(ComponentPageElementResourcesImpl.java:141) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.trigge > rCont > extEvent(ComponentPageElementImpl.java:1073) > at > org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl. > trigg > erContextEvent(InternalComponentResourcesImpl.java:287) > at > org.apache.tapestry5.corelib.components.Form._$advised$onAction(Form.ja > va:54 > 8) > at > org.apache.tapestry5.corelib.components.Form$onAction$invocation_12afb4 > 63c82 > .invokeAdvisedMethod(Form$onAction$invocation_12afb463c82.java) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocatio > n.pro > ceed(AbstractComponentMethodInvocation.java:77) > at > org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(Logging > Advic > e.java:37) > at > org.apache.tapestry5.internal.transform.LogWorker$1.advise(LogWorker.ja > va:54 > ) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocatio > n.pro > ceed(AbstractComponentMethodInvocation.java:86) > at > org.apache.tapestry5.corelib.components.Form.onAction(Form.java) > at > org.apache.tapestry5.corelib.components.Form$MethodAccess_onAction_12af > b45cb > 89.invoke(Form$MethodAccess_onAction_12afb45cb89.java) > at > org.apache.tapestry5.internal.transform.BaseEventHandlerMethodInvoker.i > nvoke > EventHandlerMethod(BaseEventHandlerMethodInvoker.java:52) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.invokeEventHand > lers( > OnEventWorker.java:157) > at > org.apache.tapestry5.internal.transform.OnEventWorker$4.advise(OnEventW > orker > .java:136) > at > org.apache.tapestry5.internal.services.AbstractComponentMethodInvocatio > n.pro > ceed(AbstractComponentMethodInvocation.java:86) > at > org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(For > m.jav > a) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispat > chEve > nt(ComponentPageElementImpl.java:950) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.proces > sEven > tTriggering(ComponentPageElementImpl.java:1132) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access > $3000 > (ComponentPageElementImpl.java:72) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invo > ke(Co > mponentPageElementImpl.java:1077) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$7.invo > ke(Co > mponentPageElementImpl.java:1074) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(Operation > Track > erImpl.java:65) > at > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerT > hread > OperationTracker.java:68) > at > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java > :1057 > ) > at > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesIm > pl.in > voke(ComponentPageElementResourcesImpl.java:141) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.trigge > rCont > extEvent(ComponentPageElementImpl.java:1073) > at > org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl > .hand > le(ComponentEventRequestHandlerImpl.java:81) > at > org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFil > ter.h > andle(ImmediateActionRenderResponseFilter.java:42) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequest > Handl > er_12afb45ccf0.java) > at > org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.jav > a:42) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequest > Handl > er_12afb45ccf0.java) > at > org.apache.tapestry5.services.TapestryModule$39.handle(TapestryModule.j > ava:2 > 567) > at > $ComponentEventRequestHandler_12afb45ccf0.handle($ComponentEventRequest > Handl > er_12afb45ccf0.java) > at > $ComponentEventRequestHandler_12afb45ccec.handle($ComponentEventRequest > Handl > er_12afb45ccec.java) > at > org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminato > r.han > dleComponentEvent(ComponentRequestHandlerTerminator.java:43) > at > org.apache.tapestry5.services.InitializeActivePageName.handleComponentE > vent( > InitializeActivePageName.java:39) > at > $ComponentRequestHandler_12afb45cced.handleComponentEvent($ComponentReq > uestH > andler_12afb45cced.java) > at > $ComponentRequestHandler_12afb45cacb.handleComponentEvent($ComponentReq > uestH > andler_12afb45cacb.java) > at > org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatc > h(Com > ponentEventDispatcher.java:46) > at > $Dispatcher_12afb45cacc.dispatch($Dispatcher_12afb45cacc.java) > at > $Dispatcher_12afb45ca9c.dispatch($Dispatcher_12afb45ca9c.java) > at > org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.s > ervic > e(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.servic > e(One > SearchLocalizationFilter.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(Reque > stErr > orFilter.java:26) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.j > ava:9 > 82) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.j > ava:9 > 72) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.StaticFilesFilter.service(Static > Files > Filter.java:90) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > org.apache.tapestry5.internal.services.URLRewriterRequestFilter.service > (URLR > ewriterRequestFilter.java:50) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > com.proquest.apps.onesearch.stats.STLRequestFilter.service(STLRequestFi > lter. > 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(C > heckF > orUpdatesFilter.java:90) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(C > heckF > orUpdatesFilter.java:80) > at > org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(Concu > rrent > Barrier.java:85) > at > org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(Ch > eckFo > rUpdatesFilter.java:103) > at > $RequestHandler_12afb45ca9d.service($RequestHandler_12afb45ca9d.java) > at > $RequestHandler_12afb45ca91.service($RequestHandler_12afb45ca91.java) > at > org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerT > ermin > ator.service(TapestryModule.java:271) > at > org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:5 > 3) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandl > er_12 > afb45ca93.java) > at > org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(Ignor > edPat > hsFilter.java:62) > at > $HttpServletRequestFilter_12afb45ca90.service($HttpServletRequestFilter > _12af > b45ca90.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandl > er_12 > afb45ca93.java) > at > com.proquest.apps.onesearch.email.EmailHttpServletRequestFilter.service > (Emai > lHttpServletRequestFilter.java:73) > at > $HttpServletRequestFilter_12afb45ca8e.service($HttpServletRequestFilter > _12af > b45ca8e.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandl > er_12 > afb45ca93.java) > at > com.proquest.apps.onesearch.services.SiteRedirectHttpServletRequestFilt > er.se > rvice(SiteRedirectHttpServletRequestFilter.java:45) > at > $HttpServletRequestFilter_12afb45ca8d.service($HttpServletRequestFilter > _12af > b45ca8d.java) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandl > er_12 > afb45ca93.java) > at > org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.j > ava:9 > 26) > at > $HttpServletRequestHandler_12afb45ca93.service($HttpServletRequestHandl > er_12 > afb45ca93.java) > at > $HttpServletRequestHandler_12afb45ca8a.service($HttpServletRequestHandl > er_12 > afb45ca8a.java) > at > org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:147) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHa > ndler > .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.j > ava:4 > 50) > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org