We need to figure out the order that the filters are initialized, so that the Tapestry filter can be initialized first. I think just listing it first in the web.xml may do the trick.
On Mon, Dec 29, 2008 at 4:00 PM, Fernando Padilla <f...@alum.mit.edu> wrote: > I just tried it, and it won't work like that :( > > Like I said, I use spring outside of tapestry. So I need a valid working > spring context before the first request ever gets to tapestry filter.. > > Here is my exception when I comment out the normal ContextLoaderListener.. > > > > [Console output redirected to > file:/local/fern/work/social-app-repository/trunk/fanwars/site/../../log.txt] > 2008-12-29 15:58:26,140 [main] ERROR org.mortbay.log - failed OpenDS > java.lang.NullPointerException > at com.protrade.common.spring.OpenDSFilter.init(OpenDSFilter.java:28) > at > com.protrade.common.web.ProtradeFilter.init(ProtradeFilter.java:37) > 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) > 2008-12-29 15:58:26,142 [main] ERROR org.mortbay.log - Failed startup of > context org.mortbay.jetty.webapp.webappcont...@1961581{/,src/main/webapp} > java.lang.NullPointerException > at com.protrade.common.spring.OpenDSFilter.init(OpenDSFilter.java:28) > at > com.protrade.common.web.ProtradeFilter.init(ProtradeFilter.java:37) > 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) > > > 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