Here are the list of like to have features for SCA + Spring. This list is under evaluation and we will have a concrete road map items once we evaluate the same.

Change the Schema Location for SCA Spring Extensions - DONE

The current schemaLocation is set to: http://www.springframework.org/schema/sca/spring-sca.xsd
...which is useless because there is no such file at that location.

Mike Edwards 01/09/2008: I have placed a copy of spring-sca.xsd at the following location: http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd
so that if now all of the schemaLocation attributes are changed to this value, the schema definition document will be found correctly.

Ramkumar 12/09/2008: Changes have been made to Tuscany to reflect the change in schema location as part of TUSCANY-2573.

Provision to Access the Application Context using Spring API - DONE

We need a provision to access the Spring Application Context programmatically after the Tuscany runtime have deployed the spring application context as component implementation to expose as services.
The best way is to expose the deployed application context is from tuscany runtime rather than accessing them using spring API, the reason being Tuscany would have a resolved instance of the application context for all the custom SCA specific tags and the namespace.

Ramkumar 06/10/2008: Refer to the itests (org.apache.tuscany.sca.implementation.spring.itests.helloworld.SpringContextAccessTestCase) in implementation.spring module.
http://svn.apache.org/repos/asf/tuscany/java/sca/modules/implementation-spring/src/test/

Implementation Policies in Spring - DONE:

The current spring implementation supports binding policies, as the spring implementation makes use of SCA bindings this is achieved by default.
But implementation policies are not supported in Spring? We need to figure out what kind of implementation policies can be supported by Spring.

Ramkumar 10/10/2008: Implementation Policies seems to be applicable for Spring and I have raised TUSCANY-2634 to take care of this.

Ramkumar 10/10/2008: Patches are now available for TUSCANY-2634. The itests for the same will be available from TUSCANY-2600.

Ramkumar 14/10/2008: Patches are now available for TUSCANY-2600. The itests are part of itest-spring folder.

SCA Annotation & Service Callbacks with Spring:

Currently it looks like SCA annotations like @Service, @Reference and @Property can be supported with Spring, yet these are not implemented as of now.
We need to figure out and what are the possible SCA annotations that can be supported by Spring applications, like @OneWay, @AllowPassByReference etc.,
Currently Spring does not support SCA service callbacks, this is because the spring applications might not aware what callbacks are all about.

Ramkumar 10/10/2008: SCA annotations and Callbacks does not seem be supported by Spring natively, though few lifecycle methods like @Init and @Destroy seems to be possible.
To support other annotation types, I believe we need to have the Tuscany runtime to introspect the spring implementation classes and inject the required objects.
Spring allows to inject the objects into its existing beans at post-initialization of bean using custom annotations defined by BeanPostProcessor.
Here we need a clarification, if this would be the right approach.

Ramkumar 14/10/2008: Refer to page http://cwiki.apache.org/confluence/display/TUSCANYWIKI/SCA+Annotation+Support+for+Spring

Specs Silent on supporting Constructor Injection:

Constructor Injection: In which the dependencies are provided through the class constructor. The Specs remains silent on whether this should be supported or not.

<bean id="Y" class"org.xyz.someapp.SomeOtherClass"> 
      <constructor-arg ref="SCAReference"/> 
</bean>

We have a specs JIRA to address the same:

sca-j NEW ISSUE: SCA Spring C & I specification does not state whether Constructor Injection should be supported - JAVA-63
http://www.osoa.org/jira/browse/JAVA-63

Ramkumar 06/10/2008: Please read Constructor vs. Setter Injection

Specs Silent in describing the usage of <sca:composite> defined in the schema:

The Spring SCA Namespace schema in the specs shows that

<xsd:element name="composite">

can be used inside the spring application context, but what is the need for this tag and how this should be used with spring application context is not explained? Can we raise a specs JIRA for this?
We have a specs JIRA to address the same:

sca-j NEW ISSUE: SCA Spring C & I specification does not state the purpose of sca:composite element - JAVA-64
http://www.osoa.org/jira/browse/JAVA-64

ComponentType Side File:

The specs does not normatively define how the componentType of a Spring Application context is determined.
We have a specs JIRA to address the same

sca-j ISSUE 58 SCA Spring C&I Specification does not have a normative definition of how to calculate the ComponentType of a Spring Application context -
http://www.osoa.org/jira/browse/JAVA-58

Mike Edwards 15/09/2008: Page describing the Component Type derived from a Spring Application Context

Handling Multiple Services:

It is possible for a Spring Bean in a Spring Application context to implement more than one interface, which may in turn be exposed via SCA as a service.
We have a specs JIRA to address the same

sca-j ISSUE 59 SCA Spring C & I specification does not state what happens when a Bean exposed as a service implements mutliple interfaces -
http://www.osoa.org/jira/browse/JAVA-59

To accomodate common beans/aspects used by different composites/components - TUSCANY-2162

The use case : service composites using components or composites as Spring beans. Those beans rely on other injected common beans or applied aspects.
We should not instantiate a new bean or aspect for every Spring component or composite if the beans and aspects are shared .
The Spring way would be to declare a parent context to accommodate the common beans / aspects.
The Spring SCA implementation specification says a new Spring context will be created for each composite. Unclear for component.
Can we enhance the specification in the sense of a parent application context ?

Ramkumar 10/10/2008: http://blog.springsource.com/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

  • No labels