Some mechanisms we have used to date. Turns out to be quite long and I
expect there are more I have overlooked. Any help to orangize/rationlize
this lot is appreciated.

Tuscany User
==========

Someone who wants to use Tuscany to run a composite in a contribution they
have constructed. They will first have to get a Tuscany distribution
  Download and unpack a distribution
  Include mvn dependency on a distribution (I guess they could depend on
individual modules but it would be cleaner to have a distribution
dependency)
  Install the Tuscany Eclipse plugin
  Get a container that embeds the Tuscany runtime

They treat Tuscany as a library and can run their contribution in a number
of ways

IDE(Eclipse)
    Contribution only project
         right click on composite (fires up the domain behind the scenes) -
depends on Tuscany Eclipse plugin
        configure runAs to fire up the launcher from Tuscany library
    Project with some kind of mainline that manually runs the lanucher, e.g.
JUnit
         dependency on Tuscany library
         dependency on just launcher modules and configure runAs with
$TUSCANY-HOME

Command line without writing a mainline
    java -jar nodeLauncher.jar compositeURI contributionLocation
         Run with direct reference to distribution directory
         Specify location of launcher jar and distribution directory via
$TUSCANY-HOME (?)
         Specify the required jars on the classpath either manually or with
tuscany-sca-manifest.jar

Command line with a mainline that fires up a node launcher
    java MyClass.jar
         Specify location of launcher jar and distribution directory via
$TUSCANY-HOME (?)
         Specify the required jars on the classpath either manually or with
tuscany-sca-manifest.jar
         There are some distinctions here as you may not want your client
code to share the same environment as the Tuscany runtime even though the
two are running in the same VM

Host-webapp, exploiting TuscanyServletFilter
     Set up the servlet filter and include the Tuscany distribution in the
webapp itself

Container. With JEE support a user may want to contribute our composite as
par of a WAR, EAR etc
     If the container embeds Tuscany then it's up to the container to ensure
that SCA contributions can be run

Mvn  again assuming there is a mainline that fires up a node launcher
   include a dependency on a Tuscany launcher distribtion

Domain
    java -jar nodeLauncher.jar domain
    and then add the contribution to the domain, configure a node and start
it

OSGi
    add all the tuscany jars and dependencies (PDETarget?) to your OSGi
environment
    Need a bundle that will launch the domain, a node with a contribution or
some other service that launches a node

Tuscany Embedder
===============

Here the embedder wants to use the Tuscany API behind the launcher in order
to exploit some individual parts of the Tuscany code base. The embedder
still treats Tuscany as a library so they still need to download a
distribution. However the embedder must set  up the classpath more
explicitly

IDE(Eclipse)
    Project with some kind of mainline that uses some Tuscany classes
         dependency on Tuscany library
         dependency on Tuscany modules from distribution. Set up manually.
         dependency on Tuscany modules from local maven repo (mvn -Peclipse)

Command line with a mainline that uses some Tuscany classes
    java MyClass.jar
         Specify the required jars on the classpath either manually or with
tuscany-sca-manifest.jar

Mvn  again with a mainline that uses some Tuscany classes
   include a dependency on a Tuscany distribution

OSGi  the embedder will construct a bundle which uses some Tuscany classes
    add all the tuscany jars and dependencies (PDETarget?) to your OSGi
environment

Tuscany Developer
===============

A developer of the Tuscany infrastructure will first check out the source
code from svn. The developer may be acting as a user (running samples) or as
an embedder (running unit ot itests). Primarily a developer will use an IDE
with the tuscany modules loaded or a mvn compile.

IDE(Eclipse) - the important thing here is to have a dependency on the
classes in the Eclipse workspace so any changes are picked up as they happen
without a mvn compile.
    Project with some kind of mainline that uses either launcher or  other
Tuscany classes
         dependency on Tuscany modules from workspace  (mvn -Peclipse)

Mvn  again with a mainline that uses either launcher or  other Tuscany
classes
   include a dependency on a Tuscany distribution


Simon

Reply via email to