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