You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2010/07/29 00:17:51 UTC

Implementation.spring within a web application

Hi,

I checked in a new module "implementation-spring-webapp" to integrate Tuscany's "implementation.spring" with Spring's WebApplicationContext [1]. This new feature is demonstrated with samples/webapps/helloworld-spring.

Typically for a web application, Spring provides a ServletContextListener so that a WebApplicationContext will be created/destroyed around the start/stop of a web application. Now we have two code path to create the ApplicationContext with both Tuscany and Spring enabled for the same web application. Having the two runtime collaborate is interesting from the following perspectives:   

a. Allow Tuscany to access the WebApplicationContext as the parent of Spring context hierarchy (potentially, we can an implementation.spring component representing the WebApplicationContext too). Otherwise, Tuscany and Spring will load two isolated copies of the application context and have duplicate bean instances.

b. Avoid parsing the spring xml definitions twice. (TBD)

I tried two ways:
1) org.apache.tuscany.sca.implementation.spring.webapp.SpringWebModuleActivator that finds the Spring WebApplicationContext from the ServletContext and inject it into a utility in the UtilityExtensionPoint org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextHelper so that implementation Spring providers can access it.

2) Define a Spring singleton bean that implements ApplicationContextAware to be injected by Spring. We'll need to configure the related application context xml file to the web.xml.

[1] http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#context-create

Thanks,
Raymond
________________________________________________________________ 
Raymond Feng
rfeng@apache.org
Apache Tuscany PMC member and committer: tuscany.apache.org
Co-author of Tuscany SCA In Action book: www.tuscanyinaction.com
Personal Web Site: www.enjoyjava.com
________________________________________________________________

On Jul 28, 2010, at 2:57 PM, rfeng@apache.org wrote:

> Author: rfeng
> Date: Wed Jul 28 21:57:29 2010
> New Revision: 980244
> 
> URL: http://svn.apache.org/viewvc?rev=980244&view=rev
> Log:
> Add implementation-spring-webapp into the build
> 
> Modified:
>    tuscany/sca-java-2.x/trunk/modules/pom.xml
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/pom.xml
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/pom.xml?rev=980244&r1=980243&r2=980244&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/pom.xml (original)
> +++ tuscany/sca-java-2.x/trunk/modules/pom.xml Wed Jul 28 21:57:29 2010
> @@ -93,6 +93,7 @@
>         <module>implementation-java-runtime</module>
>         <module>implementation-spring</module>
>         <module>implementation-spring-runtime</module>
> +        <module>implementation-spring-webapp</module>
>         <module>implementation-web</module>
>         <module>implementation-web-client</module>
>         <module>implementation-web-runtime</module>
> 
>