You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 39 Next »

This table is an attempt to capture the various requirements that I've gathered from browsing the SCA specs and discussions on the Tuscany dev list, and the work in-progress in the community.

I am hoping that it will help organize our requirements and discuss how we want to stage their implementation over our next milestones. It should also help new contributors understand who is working on what, and grab areas that need work.

The table is under construction (I just started with some requirements related to the SCA assembly PM) and I'm inviting everybody in our community to come help build that page with the requirements that they are aware of, and the features that they are interested in.

Feature area

Milestone

People working on it

Comments / description

 Assembly PM spec

 

 

 

Complex properties


Venkat

Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings.

Pass by-value / by-reference


Venkat

Initial implementation almost in? Some cleanup necessary? Need to understand how to clone/copy data with different databindings, SDO, JAX-WS, and POJOs. Understand how to handle pointers across multiple parameters when copying.

Multiplicity

 

 

Support multiplicity constraints on references. Support multiple wires. Handle overrides. Investigate how to handle binding selection. Support for callbacks.

Naming constraints in a composite

 

Luciano (Tuscany-914)

Validate that service/reference/component names are unique inside a composite. Check the presence of SCDL includes.

Multi-valued properties


 

Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings.

WSDL 2.0

 

 

Add support for WSDL 2.0 accross the board, runtime, WSDL/Java tools and WS binding.

Operation overloading (simple exact matching)


Rick

Change runtime service contract hashmap and invocation handling/dispatching. Adjust extensions to this. Match identical methods on ends of a wire.

Operation overloading (complete support)

 

 

Match and wire compatible methods, factor in different databindings, WSDL wrapping/unwrapping, and match invocation and actual parameters to a compatible method.

ComponentType side files

 

 

Partial support already in. Need to define overriding strategy when implementation and componentType metadata overlap.

Support for SCA contribution


Raymond, Luciano

Generic handling of SCA contributions and base plugin mechanism for loading/scanning artifacts. Allow a contribution and artifacts in it to be addressed by URI. Do not assume a fixed default.scdl file.

Filesystem based SCA contributions

 

Raymond, Luciano

Support free-form folder structure in a contribution. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.

JAR based SCA contributions


Raymond, Luciano

Support JAR contribution structure. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution.

SCA includes

 

 

This does not seem complete, verify, in particular wiring across includes and support for nested includes.

Composite resolution (no recursion)

 

 

Register composites and find them by Qname within a contribution. Support references across contributions in domain level includes.

Composite resolution (recursive composition)

 

 

Resolve composites with nested composites. Support full recursion. Current support needs to be fixed, as each reference to a composite gets it reloaded/redefined.

XML property configuration in side files

 

 

Properties configured in an external XML file. Resolve the file location, load it. See if loading and xpath reference mechanism needs to be adjusted for this.

Ref/Service/Property config override (no recursion)

 

 

Support overriding of services/references/properties. Investigate overrides combined with multiplicity.

Ref/Service/Property config override (recursive)

 

 

Support overriding of services/references/properties in nested composites. Handle multiple overrides. Support additions vs overrides in the case of bindings. Investigate overrides combined with multiplicity.

Wiring with service/reference bindings

 

 

Support binding URIs. Then configuration of binding URI with wires. Then propagation of binding info from a service to a reference wired to it.

Support for business exceptions

 

Rick, Raymond

Distinguish handling of runtime exceptions vs business exceptions. Add support to invocation/dispatching mechanism + POJO implementations, bindings and databinding.

Context info in error reports

 

 

Across the board, need to provide application level context data (composite, component, service, reference etc.) with errors, to allow an app developer to understand what's wrong in his application. Without that he's left having to understand all the underlying middleware.

Minimum SCDL extensibility (non SCA namespaces)

 

 

Support additional bindings, implementation types, interface types, and policies from diff namespaces. Should already work for bindings and implementations. Need to check policies and interface types.

Complete SCDL extensibility as defined by the XSD

 

 

Will need changes to a number of loaders and builders.

Support for xsi:type in addition to global elements

 

 

Changes to most loaders or improvements to LoaderRegistry.

Support for various ordering of SCDL elements

 

Simon

Loaders depend on a specific order of elements in the SCDL files. Supporting other possible sequences will require changes in the loaders logic.

Autowire - local

 

 

Adjust to the spec, which now defines this at the assembly level, independent of the Java C&I.

Autowire - domain level

 

 

Support autowire in a domain, including components services and references, policy intents and compatible bindings.

Autowire extension point

 

 

Plugin mechanism to allow different autowire algorithms to be plugged in

SCDL validation, semantic constraints (obvious cases)

 

 

Only support the obvious/main semantic constraints. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.

SCDL validation, semantic constraints (complete)

 

 

Complete support for the spec. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime.

Implementation / component matching

 

 

Make sure that an implementation matches the component that uses it. For example enforce wiring of required references.

Callback support

 

Ignacio

Combinations of sync and async. Determine which binding to use for a callback invocation.

Configured implementations

 

 

Configuration of component implementations in .componentType files or inlined in implementations (spec issue 8) and in component declarations. Resolve/merge when overlap between the three.

Promotion of Ref/ Services/ Properties (no recursion)

 

 

New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.

Promotion of Ref/ Services/ Properties (recursive)

 

 

New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references.

Multiple bindings on services and refs

 

 

Basic support for multiple bindings is in. See how configuration overriding works with multiple bindings.

Ability to use and alter SCDL model at deployment

 

Sebastien

Add missing relationships to the SCDL logical model, independent of runtime context. Allow deployment tools to alter the model and write it back to XML.

Interchangeability of Java and WSDL

 

Ant, Rick

Build ServiceContract representation from Java or WSDL. Needs more work to understand combinations of SDO/JAXB/POJOs and wrapped/unwrapped. Add logic to wiring framework to match WSDL portTypes and Java interfaces.

Document limitations and deviations from the spec

 

 

Review the spec and document Tuscany limitations and differences with the SCA assembly spec.

 Java C&I spec

 

 

 

Derive service name from interface name

 

 

Clarify with specification, is the service name the fully qualified class name, the class name without the package name, or are we adding a service name attribute to the @Service annotation

Injection of multivalued properties

 

 

Map multi-valued properties to java.util.List.

Injection of references with multiplicity 0..n

 

 

Map references with Multiplicity to java.util.List

Required properties

 

 

Validation that required properties are configured

Service references (minimum)

 

 

Minimum implementation of Service references supporting setCallback/getCallback. Local usage only with no serialization of the reference.

Service references (complete support)

 

 

Complete support for the Service reference programming model, including the ability to pass Service References around, serialize them, then use them to perform invocations outside of the context where they were initially obtained.

Conversational

 

 

Not sure what's missing. Check the spec against the runtime to assess what's remaining first.

WSDL2Java / Java2WSDL / SDO - simple cases

 

 

Command line tooling. Support wrapped/non-wrapped patterns, multiple parts/message, nested complex types, faults/Exceptions. Generation of SCA annotations in interfaces.

WSDL2Java / Java2WSDL / JAX-WS

 

 

Command line tooling. Wrap/integrate the JAX-WS tooling. Customize it to generate SCA annotations in interfaces? Investigate how the runtime could reuse the JAX-WS WSDL/Java mapping logic as well, since it'll need to know the mapping rules as well.

@Autowire

 

 

Adjust to what the latest spec, maybe a little different from the current Tuscany support.

Configured implementations

 

 

Add support for Java annotations allowing configuration of a POJO (services, references, bindings and properties) without SCDL.

SCA as a wrapper over JAX-WS async

 

 

Allow cast of an SCA proxy to a JAX-WS API to support the JAX-WS async programming model.

Ability to run with Java 2 security enabled

 

 

This is not just related to the Java C&I. Need to go over the runtime code and wrap sections of code that access resources, threads, classloaders etc in doPrivileged blocks to allow the runtime to work in an environment with Java 2 security enabled.

Document limitations and deviations from the spec

 

 

Review the spec and document Tuscany limitations and differences with the SCA Java C&I spec.

Conversational PM

 

 

 

Core support

 

Ignacio, looking for volunteer to take over

Lifecycle in. Persistence of conversation state in. Needs to support tran/recovery. Also need some redesign to avoid having to send/receive a routing path and play nicely with bindings.

Integration with bindings

 

 

Plugin mechanism to allow a binding to declare conv capability and support conversational. Maybe define a "conversational policy intent"

WS binding

 

Rick

Map conversational to the correct MEPs. Investigate how to flow conversation id. Use WS-addressing, message-id, relates-to etc.

JMS-binding

 


Need to understand how/if conversational means anything to the JMS binding

EJB binding

 


Check the EJB binding spec to understand what needs to be done here

JSON-RPC binding

 

 

Investigate if it makes sense to support conversational with this binding

SCA default binding

 

 

Understand how a concrete binding will be selected depending on conversational requirements (may fold into some policy intent work)

REST binding

 

 

Investigate if it makes sense to support conversational with this binding

HTTP Session support

 

 

Persist session scope and conversational state with the HTTP session?

Non-blocking PM

 

 

 

Core support

 

Ignacio, looking for volunteer to take over

No support for async over sync yet (see spec issue) but everything else seems to be there. I am concerned with how we represent callbacks and how their info flows between remote components

Integration with bindings

 

 

Plugin mechanism to allow a binding to declare support for async and callback, MEPs and/or polling.

WS binding (short term/sync MEP)

 

Ignacio, looking for volunteer to take over

Dispatch call to a thread and continue to use a sync MEP. Will not support unsolicited callbacks. Issue: WSDL representation of callback vs Axis2 client and sync MEP.

WS binding (real async MEP)

 

 

Use an async MEP and WS-addressing and callbacks. Also investigate what needs to be done w.r.t security on the callbacks.

JMS binding

 

 

Sync up with the latest JMS binding spec

EJB binding

 

 

Do we need to support this? We support async invocation of POJOs, but people know that EJBs are synchronous.

JSON-RPC binding

 

 

Used in AJAX apps which are based on async exchanges. So the JSON-RPC binding should support the non-blocking PM and callbacks.

REST binding

 

 

Not sure if there is a requirement at all for real CRUD REST. There may be a requirement for activity based XML/HTTP services, similar to the WS binding requirement.

SCA default binding

 

 

Understand how a concrete binding will be selected depending on non-blocking invocation requirements.

SCA default binding

 

 

 

Client side

 

 

 

Server side

 

 

 

Selection of concrete binding

 

 

Based on policy intents, capabilities of the installed runtime, and where the target service is deployed.

 JMS binding

 

 

 

Adjust to latest SCDL spec

 

 

Support for the latest SCDL syntax. Support for JMS in a JMS managed environment.

JMS data binding support

 

 

Support data bindings as defined in the JMS binding spec.

Integrate with Tuscany data bindings

 

 

Integrate with Tuscany databinding framework. Support sending/receiving JAXB or SDO objects through JMS.

WS binding

 

 

 

Adjust to latest SCDL spec

 

 

A few changes to adjust to the latest WS binding spec.

Configuration of WSDL2Java mapping

 

 

Related to the Java / WSDL story. Use the SDO based and JAX-WS Java / WSDL generators to produce WSDL? Apply the corresponding mapping in the runtime as well.

Handling of faults

 

 

Support faults at least with SDO and JAX-WS. Support other data bindings available through the data binding framework.

Support for attachements

 

 


Support for RPC encoded

 

 


Working without WSDL

 

 

Implement the JAX-WS defaults in the absence of a WSDL definition.

Support for wrapped/non-wrapped

 

 

Add support for JAX-WS wrap/unwrap patterns. Apply the same principles with SDO and other data bindings.

Support for SOAP headers

 

 

Investigate how/if SOAP headers should be exposed to a client and target service.

EJB binding

 

 

 

Client side

 

 

 

Server side

 


Generate of EJB "wrapper" code and EJB DD?

Geronimo integration

 

 

Generate Geronimo specific artifacts, and/or tighter integration with the Geronimo runtime, potentially avoiding any code generation.

REST binding

 

 

 

Resource interface and PM

 

 

Define a new component interface type for CRUD operations on a resource

Client side

 

 

Mapping to HTTP verbs on the client side

Server side

 

 

Dispatching of HTTP verbs to a component on the server side

Activity style interactions

 

 

Not real REST, similar to the WS binding but with plain XML / HTTP

Support for HTTP headers

 

 

Support for last-modified, etags and other HTTP headers

 JSON-RPC binding

 

 

 

Support for references

 

 

Currently only supports services. Needs to add client side support as well.

Integrate with latest toolkits

 

 

Integrate with latest JSON toolkits, initial integration was done some time ago, we need to refresh it.

Complete support for JSON spec

 

 

Check what's missing in the current runtime

Data binding support

 

Raymond

 

SDO and JAXB

 


Support conversions between SDO and JAXB

AXIOM support

 

 

Support conversion from/to AXIOM

SCDL annotations

 

 

Define SCDL annotations to configure data bindings. Needs to be pluggable, maybe change at some point to use Intents

Add more transformers and perf optimizations

 

 

The databinding framework approach will perform only if we have enough transformers to reduce the number of conversions going from one format to another.

Policy Intent framework

 

 

 

SCDL and core support, model, loaders, builders




Intent determination algorithm

 

 

 

Wire matching

 

 

 

Binding / container configuration

 

 

 

Transaction policy

 

 

 

SCDL model, loaders, builders

 

 

 

Runtime interceptors

 

 

 

Transaction service integration

 

 

 

Integration with bindings

 

 

 

WS-binding support for transactions

 

 

 

JMS-binding support for transactions

 

 

 

EJB binding support for transactions

 

 

 

SCA default binding support for transactions

 

 

 

Security policy

 

 

 

SCDL model, loaders, builders

 

 

 

Runtime interceptors

 

 

 

Authentication / autorization service integration

 

 

 

Integration with bindings

 

 

 

WS-binding support for security

 

 

 

JMS-binding support for security

 

 

 

EJB binding support for security

 

 

 

SCA default binding support for security

 

 

 

JSON-RPC binding support for security

 

 

 

REST binding support for security

 

 

 

Reliability policy

 

 

 

SCDL model, loaders, builders

 

 

 

Runtime interceptors

 

 

 

WS-binding support for reliability

 

 

 

JMS-binding support for reliability

 

 

 

SCA default binding support for reliability

 

 

 

Modular build

 

 

 

Extensions

 

 

Refactor extensions to improve our build system and allow the various parts of the project to be built independently

Samples

 

 

Refactor samples to improve our build system and allow the various parts of the project to be built independently

Integration tests

 

 

Refactor integration tests to improve our build system and allow the various parts of the project to be built independently

Packaging / deployment

 

 

 

SCA domain repository / metadata

 

Raymond, Sebastien

Define services to add/remove composites and maintain a logical SCA domain level composite. Needs to be pluggable. Support domain base URI and base URI for each binding scheme.

Deployment of SCA contributions

 


Define services to add/remove SCA contributions to the SCA domain.

Artifact addressing, resolving, loading

 

 

Plugin mechanism to handle addressing of artifacts within contributions, resolution within a contribution, conflicts between contributed artifacts and externally referenced artifacts (WSDL and XSD for example)

Deployment extensions

 

 

Plugin mechanism to allow an extension to contribute to deployment as well.

Tuscany classloading infrastructure

 

 

Support classloaders per SCA contribution. Isolate the application artifacts from the Tuscany runtime artifacts.

OSGI classloader integration

 

 


Administration

 

 

 

JMX support

 

 

Basic services start/stop etc. Need to assess what's in the current code base.

Diagnostic / event logging

 

 

Go through the kernel code and add event logging plug points.

Monitoring / instrumentation

 

 

Go through the kernel code and add monitoring plug points. Add monitor plug points on composite, component start/stop, service invocation etc. and make sure that they are given enough context.

Core start/stop/query admin services

 

 

Basic core services to start/stop/query running components.

Scenarios

 

 

 

Nested composition

 

 

 

Domain level wiring

 

 

 

Domain wiring across runtimes

 

 

 

Mixing runtimes in a composite

 

 

 

Web application integration

 

 

 

Mediation / routing

 

 

 

Web 2.0 application

 

 

 

Adjust Bigbank to the latest spec

 

 

 

WS-I SupplyChain application

 

 

 

Host runtimes

 

 

 

Tomcat integration

 

 

Our M2 integration story packages the whole runtime in each web app. We need another better / lighter integration.

Geronimo integration

 

 

Just run Tuscany webapps on Geronimo

Geronimo integration

 

 

A real integration with the Geronimo runtime

OSGI integration

 

 

 

Standalone server

 

 

 

Spring component type

 

 

 

Extend Spring to declare SCA services / refs

 

 

This is described in the SCA for Spring spec

Use a Spring assembly in an SCA composition

 

 

Looks like a subset of the SCA for Spring spec is implemented?

Javascript component type

 

 

 

Support for JavaScript components

 

 

 

Groovy component type

 

 

 

Support for Groovy components

 

 

 

JRuby component type

 

 

 

Support for JRuby components

 

 

 

BPEL component type

 

 

 

Support for BPEL components

 

 

 

Function test suite

 

 

 

TBD

 

 

 

Integration test suite

 

 

 

Complex composition test cases

 


 

Multiple runtimes / containers / bindings

 

 

 

WS based test cases

 

 

 

EJB based test cases

 

 

 

JMS based test cases

 

 

 

REST based test cases

 

 

 

JSON-RPC based test cases

 

 

 

Spring integration test cases

 

 

 

 

 

 

 

Samples

 

 

 

Sample binding

 

 

 

Sample databinding

 

 

 

Sample component impl. type

 

 

 

Sample policy

 

 

 

Simple assembly samples

 

 

 

WS binding samples

 

 

 

JMS binding samples

 

 

 

EJB samples

 

 

 

JSON-RPC samples

 

 

 

Nested composites

 

 

 

SCA default binding

 

 

 

SCA include samples

 

 

 

Property samples

 

 

 

POJO samples

 

 

 

Jruby samples

 

 

 

Javascript samples

 

 

 

Groovy samples

 

 

 

REST samples

 

 

 

Configuration override samples

 

 

 

Transaction samples

 

 

 

Reliability samples

 

 

 

Security samples

 

 

 

Standalone server samples

 

 

 

Web app integration samples

 

 

 

Spring integration samples

 

 

 

Architecture documentation

 

 

 

Kernel

 

 

 

POJO support

 

 

 

Plugging in a component impl type

 

 

 

Plugging in a binding

 

 

 

Plugging in a policy

 

 

 

Plugging in a data binding

 

 

 

Plugging in an interface type

 

 

 

Plugging in a new host integration

 

 

 

Building

 

 

 

JMS binding

 

 

 

WS-binding

 

 

 

JSON-RPC binding

 

 

 

RMI/EJB

 

 

 

Deployment / packaging

 

 

 

OSGI integration

 

 

 

Spring integration

 

 

 

User documentation

 

 

 

Build Tuscany

 

 

 

Develop an SCA app

 

 

 

Build an SCA app

 

 

 

Package/Deploy

 

 

 

Run

 

 

 

  • No labels