You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Jeremy Boynes <jb...@apache.org> on 2006/12/26 18:44:54 UTC
Deployment API
We currently have a deployment SPI that supports the creation of new
components from the configuration object model. This is powerful
interface as it provides the user with complete control over the
creation of components in the runtime. That power comes with a price
though in that the user needs access to the configuration model
classes (including portions supplied by extensions) and that makes it
very hard to support remote (cross-VM) deployment.
I've started work on a deployment API that can be used by clients and/
or hosts to control what is running in a Tuscany based SCA Domain.
There is some strawman code in o.a.t.host.deployment
The basic idea behind this is that there is an SCA Domain that
represents all the services and components that a user has running.
This Domain is a logical representation that spans multiple,
cooperating, federated physical runtimes - that representation is an
Assembly of components that provide and consume services. A user can
manipulate the Assembly to determine which services are provided at
any time (for example, by creating or deleting components) and which
services are consumed (by changing the wiring). The Assembly is an
instance of the Assembly Model used to describe the components in a
Domain. It is a live instance so manipulation of it directly affects
the services provided by the Domain. Portions of the Assembly can be
statically represented by SCDL XML documents (e.g. a <composite>
document can be used to describe the implementation of a component in
terms of others).
All manipulations are performed through an AssemblyService exposed by
the Domain. This can be called directly (for example, it could be
bound to a web service and invoked from a client), or indirectly (for
example, copying a file to a directory could trigger changes such as
creating a component). A manipulation is represented by a change-set
resource whose content describes the operations to be performed (such
as create component). The format for that is determined by the
content-type of the resource and can be anything understood by the
implementation; examples would be XML, serialized Java objects,
Groovy script, and so on.
Now the Assembly is a logical representation of the Domain's services
and as such does not itself contain any physical implementation
artifacts. What it does contain though is references to certain
definitions that are used in the model. For example, it contains
references to WSDL portTypes or Java interfaces that define service
contracts, or it references Java classes, PHP scripts or <composite>s
that define component implementations. These definitions are made
available to the Domain through a ContributionService that allows
physical artifacts (resources) to be contributed into the Domain. For
example, a user might contribute a JAR file containing Java bytecode,
a XML document containing WSDL components, or an archive type like an
EAR that contains other resources. The ContributionService
implementation inspects the resource based on its content-type to
determine what definitions it provides and then makes them available
for use from the Assembly.
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org