On Mon, Dec 29, 2008 at 4:09 PM, Fernando Padilla <f...@alum.mit.edu> wrote: > I was expecting you would be working on this feature, but I really don't > want to change the way I instantiate my spring context.. > > Could you hook in something that allows me to turn off this new feature and > have it be perfectly backward compatible?
Please add an issue and I'll work on it. You'll lose the ability to inject Tapestry services into Spring beans. > Or if it finds an already > instantiated Spring Context, use that without any of the fanciness you're > planning? That would confuse people more, as they would get mysterious errors that they couldn't inject Tapestry into Spring or vice-versa, because of the incomplete initialization. I no longer using warnings for this kind of thing, as they are universally ignored (even by people having problems in this specific area), therefore an exception or explicit configuration is the way to go. > > > > Howard Lewis Ship wrote: >> >> This is a change in behavior from Tapestry 5.0; it was necessary in >> order to coordinate Spring and Tapestry IoC. It is necessary to let >> Tapestry initialize Spring and use Tapestry-specific subclasses of >> XmlWebApplicationContext and DefaultListableBeanFactory, to hook in >> the logic that allows Spring beans to use @Inject and @InjectService. >> >> You should be fine if you just remove the ContextLoaderListener from >> your web.xml. >> >> On Mon, Dec 29, 2008 at 3:22 PM, Fernando Padilla >> <f...@citizensportsinc.com> wrote: >>> >>> I just tried to run with the latest tapestry-trunk, and I get this really >>> nasty exception :( :( >>> >>> I initialize my own spring context with a ContextLoaderListener, because >>> I >>> need spring outside of tapestry. Why is tapestry attempting to create a >>> context? >>> >>> >>> >>> >>> 2008-12-29 15:18:27,363 [main] ERROR org.apache.tapestry5.ioc.Registry - >>> Cannot initialize context because there is already a root application >>> context present - check whether you have multiple ContextLoader* >>> definitions >>> in your web.xml! >>> 2008-12-29 15:18:27,363 [main] ERROR org.apache.tapestry5.ioc.Registry - >>> Operations trace: >>> 2008-12-29 15:18:27,364 [main] ERROR org.apache.tapestry5.ioc.Registry - >>> [ >>> 1] Realizing service ApplicationContext >>> 2008-12-29 15:18:27,364 [main] ERROR org.apache.tapestry5.ioc.Registry - >>> [ >>> 2] Invoking ObjectCreator for Spring ApplicationContext >>> 2008-12-29 15:18:27,364 [main] ERROR org.apache.tapestry5.ioc.Registry - >>> [ >>> 3] Creating Spring ApplicationContext via ContextLoader >>> 2008-12-29 15:18:27,365 [main] ERROR Spring.ApplicationContext - >>> Construction of service ApplicationContext failed: Cannot initialize >>> context >>> because there is already a root application context present - check >>> whether >>> you have multiple ContextLoader* definitions in your web.xml! >>> org.apache.tapestry5.ioc.internal.OperationException: Cannot initialize >>> context because there is already a root application context present - >>> check >>> whether you have multiple ContextLoader* definitions in your web.xml! >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:74) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:96) >>> at >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:871) >>> at >>> >>> org.apache.tapestry5.internal.spring.SpringModuleDef$1$2.createObject(SpringModuleDef.java:76) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) >>> at >>> >>> org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunnable.java:36) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:52) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:96) >>> at >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:871) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) >>> at >>> >>> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) >>> at >>> >>> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:52) >>> at >>> >>> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:56) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) >>> at >>> >>> org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunnable.java:36) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:52) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:96) >>> at >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:871) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) >>> at >>> >>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65) >>> at >>> >>> $ConfigurableWebApplicationContext_11e850a8929.delegate($ConfigurableWebApplicationContext_11e850a8929.java) >>> at >>> >>> $ConfigurableWebApplicationContext_11e850a8929.getBeanDefinitionCount($ConfigurableWebApplicationContext_11e850a8929.java) >>> at >>> >>> org.apache.tapestry5.internal.spring.SpringModule$1.initializeApplication(SpringModule.java:45) >>> at >>> >>> $ApplicationInitializer_11e850a892a.initializeApplication($ApplicationInitializer_11e850a892a.java) >>> at >>> >>> org.apache.tapestry5.services.TapestryModule$37.initializeApplication(TapestryModule.java:1912) >>> at >>> >>> $ApplicationInitializer_11e850a892a.initializeApplication($ApplicationInitializer_11e850a892a.java) >>> at >>> >>> $ApplicationInitializer_11e850a8925.initializeApplication($ApplicationInitializer_11e850a8925.java) >>> at >>> >>> org.apache.tapestry5.services.TapestryModule$18.initializeApplication(TapestryModule.java:1043) >>> at >>> >>> $ServletApplicationInitializer_11e850a890f.initializeApplication($ServletApplicationInitializer_11e850a890f.java) >>> at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:91) >>> at >>> org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) >>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >>> at >>> >>> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589) >>> at org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >>> at >>> >>> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1216) >>> at >>> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509) >>> at >>> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447) >>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >>> at >>> org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) >>> at org.mortbay.jetty.Server.doStart(Server.java:222) >>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >>> at runjettyrun.Bootstrap.main(Bootstrap.java:76) >>> Caused by: java.lang.IllegalStateException: Cannot initialize context >>> because there is already a root application context present - check >>> whether >>> you have multiple ContextLoader* definitions in your web.xml! >>> at >>> >>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:172) >>> at >>> >>> org.apache.tapestry5.internal.spring.SpringModuleDef$1$2$1.invoke(SpringModuleDef.java:86) >>> at >>> >>> org.apache.tapestry5.ioc.internal.InvokableToRunnable.run(InvokableToRunnable.java:36) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:52) >>> ... 45 more >>> >>> --------------------------------------------------------------------- >>> 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 > > -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org