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

Reply via email to