You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Anthony Schexnaildre <ap...@gmail.com> on 2009/03/17 15:27:30 UTC
Spring root context and Tap 5.1
From my reading it seems Tap 5.1 is supposed to be backwards
compatible with 5.0.18 but not quite there yet. I am running Tapestry
in the same webapp as RestEasy. I am creating a root spring context
that both resteasy and tapestry share. I just added 5.1 to try it out
and I get an exception on jetty start up.
Caused by: 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.invoke(OperationTrackerImpl.java:90)
at
org
.apache
.tapestry5
.ioc
.internal
.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at
org
.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:
939)
at org.apache.tapestry5.internal.spring.SpringModuleDef
$3.createObject(SpringModuleDef.java:166)
at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator
$1.invoke(OperationTrackingObjectCreator.java:45)
at
org
.apache
.tapestry5
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
at
org
.apache
.tapestry5
.ioc
.internal
.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at
org
.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:
939)
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.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
at
org
.apache
.tapestry5
.ioc
.internal
.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
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.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
at
org
.apache
.tapestry5
.ioc
.internal
.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at
org
.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:
939)
at
org
.apache
.tapestry5
.ioc
.internal
.OperationTrackingObjectCreator
.createObject(OperationTrackingObjectCreator.java:49)
at
org
.apache
.tapestry5
.ioc
.internal
.services
.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65)
... 54 more
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:182)
at org.apache.tapestry5.internal.spring.SpringModuleDef
$3$1.invoke(SpringModuleDef.java:176)
at
org
.apache
.tapestry5
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
... 73 more
2009-03-17 10:15:13.154::INFO: Started
SelectChannelConnector@0.0.0.0:8080
web.xml:
<web-app>
<display-name>PaymentObjects Webservices</display-name>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/ws</param-value>
</context-param>
<context-param>
<!--
The only significant configuration for Tapestry 5, this informs
Tapestry of where to look for pages, components and mixins.
-->
<param-name>tapestry.app-package</param-name>
<param-value>com.paymentobjects.webservices.site</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:webservices-client-context.xml
classpath:webservices-context.xml</param-value>
</context-param>
<context-param>
<param-name>locatorFactorySelector</param-name>
<param-value>classpath:rootContext.xml</param-value>
</context-param>
<context-param>
<param-name>parentContextKey</param-name>
<param-value>ROOT_CONTEXT_KEY</param-value>
</context-param>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</
filter-class>
</filter>
<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</
filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-
class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</
listener-class>
</listener>
<listener>
<listener-
class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</
listener-class>
</listener>
<listener>
<listener-
class
>org.springframework.security.ui.session.HttpSessionEventPublisher</
listener-class>
</listener>
<servlet>
<servlet-name>webservices</servlet-name>
<servlet-
class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</
servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webservices</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
-Anthony
Re: Spring root context and Tap 5.1
Posted by Fernando Padilla <fe...@alum.mit.edu>.
No. I think you can only do one way or the other at the moment.
Inge Solvoll wrote:
> Does that configuration mean that you can't inject T5 IoC services into
> spring?
>
> On Tue, Mar 17, 2009 at 3:47 PM, Anthony Schexnaildre <ap...@gmail.com>wrote:
>
>> Thank you.
>>
>> -Anthony
>>
>>
>> On Mar 17, 2009, at 10:36 AM, Andy Pahne wrote:
>>
>>
>>> I think the reason is: the context is iniitialized twice. Once by the
>>> filter you defined in your web.xml and once by tapestry-spring.
>>>
>>> If you prefer tapestry-spring NOT initializing your context, then add this
>>> to your web.xml
>>>
>>> <!-- tapestry-spring should not initialize spring context, we have a
>>> filter for that -->
>>> <context-param>
>>> <param-name>tapestry.use-external-spring-context</param-name>
>>> <param-value>true</param-value>
>>> </context-param>
>>>
>>>
>>>
>>>
>>> Anthony Schexnaildre schrieb:
>>>
>>>> From my reading it seems Tap 5.1 is supposed to be backwards compatible
>>>> with 5.0.18 but not quite there yet. I am running Tapestry in the same
>>>> webapp as RestEasy. I am creating a root spring context that both resteasy
>>>> and tapestry share. I just added 5.1 to try it out and I get an exception on
>>>> jetty start up.
>>>>
>>>> Caused by: 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.invoke(OperationTrackerImpl.java:90)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>>> at
>>>> org.apache.tapestry5.internal.spring.SpringModuleDef$3.createObject(SpringModuleDef.java:166)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>>> 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.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
>>>> 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.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65)
>>>> ... 54 more
>>>> 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:182)
>>>> at
>>>> org.apache.tapestry5.internal.spring.SpringModuleDef$3$1.invoke(SpringModuleDef.java:176)
>>>> at
>>>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>>> ... 73 more
>>>> 2009-03-17 10:15:13.154::INFO: Started SelectChannelConnector@0.0.0.0
>>>> :8080
>>>>
>>>>
>>>> web.xml:
>>>>
>>>>
>>>> <web-app>
>>>>
>>>> <display-name>PaymentObjects Webservices</display-name>
>>>> <context-param>
>>>> <param-name>resteasy.servlet.mapping.prefix</param-name>
>>>> <param-value>/ws</param-value>
>>>> </context-param>
>>>>
>>>> <context-param>
>>>> <!--
>>>> The only significant configuration for Tapestry 5, this informs
>>>> Tapestry of where to look for pages, components and mixins.
>>>> -->
>>>> <param-name>tapestry.app-package</param-name>
>>>> <param-value>com.paymentobjects.webservices.site</param-value>
>>>> </context-param>
>>>>
>>>> <context-param>
>>>> <param-name>contextConfigLocation</param-name>
>>>> <param-value>classpath:webservices-client-context.xml
>>>> classpath:webservices-context.xml</param-value>
>>>> </context-param>
>>>>
>>>> <context-param>
>>>> <param-name>locatorFactorySelector</param-name>
>>>> <param-value>classpath:rootContext.xml</param-value>
>>>> </context-param>
>>>>
>>>> <context-param>
>>>> <param-name>parentContextKey</param-name>
>>>> <param-value>ROOT_CONTEXT_KEY</param-value>
>>>> </context-param>
>>>>
>>>> <filter>
>>>> <filter-name>springSecurityFilterChain</filter-name>
>>>>
>>>> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
>>>> </filter>
>>>>
>>>> <filter>
>>>> <filter-name>app</filter-name>
>>>>
>>>> <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>>>> </filter>
>>>>
>>>> <filter-mapping>
>>>> <filter-name>springSecurityFilterChain</filter-name>
>>>> <url-pattern>/*</url-pattern>
>>>> </filter-mapping>
>>>>
>>>> <filter-mapping>
>>>> <filter-name>app</filter-name>
>>>> <url-pattern>/*</url-pattern>
>>>> </filter-mapping>
>>>>
>>>> <listener>
>>>>
>>>> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
>>>> </listener>
>>>>
>>>> <listener>
>>>>
>>>> <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
>>>> </listener>
>>>>
>>>> <listener>
>>>>
>>>> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
>>>> </listener>
>>>>
>>>> <servlet>
>>>> <servlet-name>webservices</servlet-name>
>>>>
>>>> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
>>>> </servlet>
>>>>
>>>> <servlet-mapping>
>>>> <servlet-name>webservices</servlet-name>
>>>> <url-pattern>/ws/*</url-pattern>
>>>> </servlet-mapping>
>>>>
>>>> </web-app>
>>>>
>>>>
>>>>
>>>>
>>>> -Anthony
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: Spring root context and Tap 5.1
Posted by Anthony Schexnaildre <ap...@gmail.com>.
Absolutrly not. I think it could actually be considered a bug that the old
context loader would actually allow that. Not only can I still load spring
services but it solved a threading issue with my webservices in the same
webapp (most likely due to tapestry trying to init it's own context).
-Anthony
On Mar 17, 2009 3:47 PM, "Inge Solvoll" <in...@gmail.com> wrote:
Does that configuration mean that you can't inject T5 IoC services into
spring?
On Tue, Mar 17, 2009 at 3:47 PM, Anthony Schexnaildre <apschexn@gmail.com
>wrote:
> Thank you. > > -Anthony > > > On Mar 17, 2009, at 10:36 AM, Andy Pahne
wrote: > > >> I think the ...
Re: Spring root context and Tap 5.1
Posted by Inge Solvoll <in...@gmail.com>.
Does that configuration mean that you can't inject T5 IoC services into
spring?
On Tue, Mar 17, 2009 at 3:47 PM, Anthony Schexnaildre <ap...@gmail.com>wrote:
> Thank you.
>
> -Anthony
>
>
> On Mar 17, 2009, at 10:36 AM, Andy Pahne wrote:
>
>
>> I think the reason is: the context is iniitialized twice. Once by the
>> filter you defined in your web.xml and once by tapestry-spring.
>>
>> If you prefer tapestry-spring NOT initializing your context, then add this
>> to your web.xml
>>
>> <!-- tapestry-spring should not initialize spring context, we have a
>> filter for that -->
>> <context-param>
>> <param-name>tapestry.use-external-spring-context</param-name>
>> <param-value>true</param-value>
>> </context-param>
>>
>>
>>
>>
>> Anthony Schexnaildre schrieb:
>>
>>> From my reading it seems Tap 5.1 is supposed to be backwards compatible
>>> with 5.0.18 but not quite there yet. I am running Tapestry in the same
>>> webapp as RestEasy. I am creating a root spring context that both resteasy
>>> and tapestry share. I just added 5.1 to try it out and I get an exception on
>>> jetty start up.
>>>
>>> Caused by: 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.invoke(OperationTrackerImpl.java:90)
>>> at
>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>> at
>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>> at
>>> org.apache.tapestry5.internal.spring.SpringModuleDef$3.createObject(SpringModuleDef.java:166)
>>> at
>>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>>> at
>>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>> at
>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>> at
>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>> 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.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
>>> at
>>> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
>>> 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.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>> at
>>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>> at
>>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>>> at
>>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>>> at
>>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65)
>>> ... 54 more
>>> 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:182)
>>> at
>>> org.apache.tapestry5.internal.spring.SpringModuleDef$3$1.invoke(SpringModuleDef.java:176)
>>> at
>>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>>> ... 73 more
>>> 2009-03-17 10:15:13.154::INFO: Started SelectChannelConnector@0.0.0.0
>>> :8080
>>>
>>>
>>> web.xml:
>>>
>>>
>>> <web-app>
>>>
>>> <display-name>PaymentObjects Webservices</display-name>
>>> <context-param>
>>> <param-name>resteasy.servlet.mapping.prefix</param-name>
>>> <param-value>/ws</param-value>
>>> </context-param>
>>>
>>> <context-param>
>>> <!--
>>> The only significant configuration for Tapestry 5, this informs
>>> Tapestry of where to look for pages, components and mixins.
>>> -->
>>> <param-name>tapestry.app-package</param-name>
>>> <param-value>com.paymentobjects.webservices.site</param-value>
>>> </context-param>
>>>
>>> <context-param>
>>> <param-name>contextConfigLocation</param-name>
>>> <param-value>classpath:webservices-client-context.xml
>>> classpath:webservices-context.xml</param-value>
>>> </context-param>
>>>
>>> <context-param>
>>> <param-name>locatorFactorySelector</param-name>
>>> <param-value>classpath:rootContext.xml</param-value>
>>> </context-param>
>>>
>>> <context-param>
>>> <param-name>parentContextKey</param-name>
>>> <param-value>ROOT_CONTEXT_KEY</param-value>
>>> </context-param>
>>>
>>> <filter>
>>> <filter-name>springSecurityFilterChain</filter-name>
>>>
>>> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
>>> </filter>
>>>
>>> <filter>
>>> <filter-name>app</filter-name>
>>>
>>> <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>>> </filter>
>>>
>>> <filter-mapping>
>>> <filter-name>springSecurityFilterChain</filter-name>
>>> <url-pattern>/*</url-pattern>
>>> </filter-mapping>
>>>
>>> <filter-mapping>
>>> <filter-name>app</filter-name>
>>> <url-pattern>/*</url-pattern>
>>> </filter-mapping>
>>>
>>> <listener>
>>>
>>> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
>>> </listener>
>>>
>>> <listener>
>>>
>>> <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
>>> </listener>
>>>
>>> <listener>
>>>
>>> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
>>> </listener>
>>>
>>> <servlet>
>>> <servlet-name>webservices</servlet-name>
>>>
>>> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
>>> </servlet>
>>>
>>> <servlet-mapping>
>>> <servlet-name>webservices</servlet-name>
>>> <url-pattern>/ws/*</url-pattern>
>>> </servlet-mapping>
>>>
>>> </web-app>
>>>
>>>
>>>
>>>
>>> -Anthony
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
Re: Spring root context and Tap 5.1
Posted by Anthony Schexnaildre <ap...@gmail.com>.
Thank you.
-Anthony
On Mar 17, 2009, at 10:36 AM, Andy Pahne wrote:
>
> I think the reason is: the context is iniitialized twice. Once by
> the filter you defined in your web.xml and once by tapestry-spring.
>
> If you prefer tapestry-spring NOT initializing your context, then
> add this to your web.xml
>
> <!-- tapestry-spring should not initialize spring context, we have
> a filter for that -->
> <context-param>
> <param-name>tapestry.use-external-spring-context</param-name>
> <param-value>true</param-value>
> </context-param>
>
>
>
>
> Anthony Schexnaildre schrieb:
>> From my reading it seems Tap 5.1 is supposed to be backwards
>> compatible with 5.0.18 but not quite there yet. I am running
>> Tapestry in the same webapp as RestEasy. I am creating a root
>> spring context that both resteasy and tapestry share. I just added
>> 5.1 to try it out and I get an exception on jetty start up.
>>
>> Caused by: 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.invoke(OperationTrackerImpl.java:
>> 90)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>> at
>> org
>> .apache
>> .tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>> at org.apache.tapestry5.internal.spring.SpringModuleDef
>> $3.createObject(SpringModuleDef.java:166)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator
>> $1.invoke(OperationTrackingObjectCreator.java:45)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:
>> 68)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>> at
>> org
>> .apache
>> .tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>> 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.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:
>> 60)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:
>> 52)
>> 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.OperationTrackerImpl.invoke(OperationTrackerImpl.java:
>> 68)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>> at
>> org
>> .apache
>> .tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .OperationTrackingObjectCreator
>> .createObject(OperationTrackingObjectCreator.java:49)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc
>> .internal
>> .services
>> .JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:
>> 65)
>> ... 54 more
>> 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:182)
>> at org.apache.tapestry5.internal.spring.SpringModuleDef
>> $3$1.invoke(SpringModuleDef.java:176)
>> at
>> org
>> .apache
>> .tapestry5
>> .ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:
>> 68)
>> ... 73 more
>> 2009-03-17 10:15:13.154::INFO: Started SelectChannelConnector@0.0.0.0
>> :8080
>>
>>
>> web.xml:
>>
>>
>> <web-app>
>>
>> <display-name>PaymentObjects Webservices</display-name>
>> <context-param>
>> <param-name>resteasy.servlet.mapping.prefix</param-name>
>> <param-value>/ws</param-value>
>> </context-param>
>>
>> <context-param>
>> <!--
>> The only significant configuration for Tapestry 5, this
>> informs
>> Tapestry of where to look for pages, components and
>> mixins.
>> -->
>> <param-name>tapestry.app-package</param-name>
>> <param-value>com.paymentobjects.webservices.site</param-value>
>> </context-param>
>>
>> <context-param>
>> <param-name>contextConfigLocation</param-name>
>> <param-value>classpath:webservices-client-context.xml
>> classpath:webservices-context.xml</param-value>
>> </context-param>
>>
>> <context-param>
>> <param-name>locatorFactorySelector</param-name>
>> <param-value>classpath:rootContext.xml</param-value>
>> </context-param>
>>
>> <context-param>
>> <param-name>parentContextKey</param-name>
>> <param-value>ROOT_CONTEXT_KEY</param-value>
>> </context-param>
>>
>> <filter>
>> <filter-name>springSecurityFilterChain</filter-name>
>> <filter-class>org.springframework.web.filter.DelegatingFilterProxy
>> </filter-class>
>> </filter>
>>
>> <filter>
>> <filter-name>app</filter-name>
>> <filter-
>> class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>> </filter>
>>
>> <filter-mapping>
>> <filter-name>springSecurityFilterChain</filter-name>
>> <url-pattern>/*</url-pattern>
>> </filter-mapping>
>>
>> <filter-mapping>
>> <filter-name>app</filter-name>
>> <url-pattern>/*</url-pattern>
>> </filter-mapping>
>>
>> <listener>
>> <listener-
>> class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</
>> listener-class>
>> </listener>
>>
>> <listener>
>> <listener-
>> class
>> >org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</
>> listener-class>
>> </listener>
>>
>> <listener>
>> <listener-
>> class
>> >org.springframework.security.ui.session.HttpSessionEventPublisher</
>> listener-class>
>> </listener>
>>
>> <servlet>
>> <servlet-name>webservices</servlet-name>
>> <servlet-
>> class
>> >org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</
>> servlet-class>
>> </servlet>
>>
>> <servlet-mapping>
>> <servlet-name>webservices</servlet-name>
>> <url-pattern>/ws/*</url-pattern>
>> </servlet-mapping>
>>
>> </web-app>
>>
>>
>>
>>
>> -Anthony
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
Re: Spring root context and Tap 5.1
Posted by Andy Pahne <an...@googlemail.com>.
I think the reason is: the context is iniitialized twice. Once by the
filter you defined in your web.xml and once by tapestry-spring.
If you prefer tapestry-spring NOT initializing your context, then add
this to your web.xml
<!-- tapestry-spring should not initialize spring context, we have a
filter for that -->
<context-param>
<param-name>tapestry.use-external-spring-context</param-name>
<param-value>true</param-value>
</context-param>
Anthony Schexnaildre schrieb:
> From my reading it seems Tap 5.1 is supposed to be backwards
> compatible with 5.0.18 but not quite there yet. I am running Tapestry
> in the same webapp as RestEasy. I am creating a root spring context
> that both resteasy and tapestry share. I just added 5.1 to try it out
> and I get an exception on jetty start up.
>
> Caused by: 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.invoke(OperationTrackerImpl.java:90)
>
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>
> at
> org.apache.tapestry5.internal.spring.SpringModuleDef$3.createObject(SpringModuleDef.java:166)
>
> at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>
> 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.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
>
> at
> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
>
> 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.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:939)
>
> at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>
> at
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:65)
>
> ... 54 more
> 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:182)
>
> at
> org.apache.tapestry5.internal.spring.SpringModuleDef$3$1.invoke(SpringModuleDef.java:176)
>
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>
> ... 73 more
> 2009-03-17 10:15:13.154::INFO: Started
> SelectChannelConnector@0.0.0.0:8080
>
>
> web.xml:
>
>
> <web-app>
>
> <display-name>PaymentObjects Webservices</display-name>
>
> <context-param>
> <param-name>resteasy.servlet.mapping.prefix</param-name>
> <param-value>/ws</param-value>
> </context-param>
>
> <context-param>
> <!--
> The only significant configuration for Tapestry 5, this
> informs
> Tapestry of where to look for pages, components and mixins.
> -->
> <param-name>tapestry.app-package</param-name>
> <param-value>com.paymentobjects.webservices.site</param-value>
> </context-param>
>
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>classpath:webservices-client-context.xml
> classpath:webservices-context.xml</param-value>
> </context-param>
>
> <context-param>
> <param-name>locatorFactorySelector</param-name>
> <param-value>classpath:rootContext.xml</param-value>
> </context-param>
>
> <context-param>
> <param-name>parentContextKey</param-name>
> <param-value>ROOT_CONTEXT_KEY</param-value>
> </context-param>
>
> <filter>
> <filter-name>springSecurityFilterChain</filter-name>
>
> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
>
> </filter>
>
> <filter>
> <filter-name>app</filter-name>
>
> <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>
> </filter>
>
> <filter-mapping>
> <filter-name>springSecurityFilterChain</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> <filter-mapping>
> <filter-name>app</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> <listener>
>
> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
>
> </listener>
>
> <listener>
>
> <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
>
> </listener>
>
> <listener>
>
> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
>
> </listener>
>
> <servlet>
> <servlet-name>webservices</servlet-name>
>
> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
>
> </servlet>
>
> <servlet-mapping>
> <servlet-name>webservices</servlet-name>
> <url-pattern>/ws/*</url-pattern>
> </servlet-mapping>
>
> </web-app>
>
>
>
>
> -Anthony
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org