Hi,
Let's look at a use case:
Assuming we have a deployable composite as follows.
<composite ...>
<component name="MyComponent">
<service name="MyService>
<binding.ws .../>
</service>
</component>
</composite>
When this composite is deployed to the SCA domain, then "MyService" should
be available over the Web Service binding. Let's assume that the deployed
URI is http://localhost:8080/MyComponent/MyService.
Now it becomes interesting: Is "MyService" available for
SCADomain.getService(MyService.class, "MyComponent/MyService")? If so, which
binding should be used?
If the answer is yes, I think by the SCA spec, only Web Service binding is
available to access MyService. Then the service proxy returned from
SCADomain.getService(...) will be a self reference with a Web Service
binding and the binding URI should be the SAME as the calculated service
binding URI, i.e., http://localhost:8080/MyComponent/MyService. (I think
the binding URI for the self reference is not correctly filled today and
that's why the $self$ comes into the binding providers' faces).
The other option is that if the service doesn't have a SCA binding,
SCADomain.getService(...) will throw ServiceUnavailableException.
Thanks,
Raymond
----- Original Message -----
From: "Matthew Sykes" <[EMAIL PROTECTED]>
To: <tuscany-dev@ws.apache.org>
Sent: Wednesday, June 06, 2007 12:31 PM
Subject: Re: CompositeBuilderImpl.createSelfReferences creates a $self$
reference using the service binding
I'm actually bumping up against one of the problems that ant has
described - the creation of $self$ reference URIs.
I don't believe a binding implementation should have to expect to deal
with odd URI's that were generated by the runtime and I'm curious how
bindings are supposed to know what to do with each of forms that are
invented.
In the case of the binding implementation I'm working with, the reference
binding uses the uri to determine the target service. When the URI is
changed it is no longer valid as no service exists with at the modified
URI.
Any ideas on how this could be implemented without forcing the bindings to
understand $self$ references?
Thanks.
ant elder wrote:
I think its actually a bug in the jsonrpc binding that its using the
component self reference, but that aside, this still seems odd to me.
Just
because a particular binding is on a service how can it be sure that that
same binding will work as a reference? Some binding's don't support
references, some have different attributes for services or references, on
some binding's the URI may include the reference name so this would end
up
including $self$ in the URI.
...ant
On 5/18/07, Raymond Feng <[EMAIL PROTECTED]> wrote:
Hi,
The self references are created to support the
ComponentContext.createSelfReference() in a consistent way as regular
references.
In your case, if the binding.jsonrpc is declared under the component,
then
the component can only be assessed over jsonrpc binding (not even SCA
binding). And the component will be exposed as a json-rpc service. So
invoking the json-rpc reference handler is the correct behavior from the
client side.
Thanks,
Raymond
--
Matthew Sykes
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]