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

Reply via email to