You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Brady Johnson <bj...@roguewave.com> on 2007/07/12 21:22:39 UTC

What services are Web Service accessable

 
I've been looking into loading and invoking Tuscany services from a
container other than Axis, and have found what seems to be erroneous
service access from Axis. In particular the CppBigBank TuscanySCA CPP
service. The URL used to invoke the service is:
http://localhost/bigbank.phpwsclient/bigwelcome.php , which invokes the
AccountServiceComponent. Looking at the bigbank.account.composite, the
AccountService service is the service for the AccountServiceComponent
component. The AccountService has an empty <binding.ws/> element, but
nothing specifying how to access the AccountServiceComponent remotely.
Nor are there any relavent <reference/> elements.
 
Is it correct to be able to invoke the AccountService as a web service
if there are no <binding.ws/> elements?
 
I can see that this works because the client puts the component name and
service name in the http URL, allowing the component and service to be
retrieved. The Axis2Service code gets a Component, the Composite, the
CompositeService (which is a Component ???). Then from the
CompositeService, it gets a Composite (again??), a Reference, a Binding,
and then a WSServiceProxy which is invoked. But logically, I would
envision Web Service invocations working by obtaining the Composite, the
Component, the Service, and then the Binding, on which you would get the
ServiceWrapper. (or something similar with a reference) 
 
Am I understanding this correctly? Does the option I suggest make sense,
or am I missing something?
 
What would be really cool would be to have a runtime service invocation
map, where you map the operation name (or some other piece of info
retrieved from the SOAP message) to the ServiceWrapper. So runtime
invocation would just involve a map lookup and an invocation of the
ServiceWrapper.
 
--------------------
Brady Johnson
Lead Software Developer - HydraSCA
Rogue Wave Software - brady.johnson@roguewave.com
 

Re: What services are Web Service accessable

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Hi,

Some comments inline.


Simon Laws wrote:
> On 7/12/07, Brady Johnson <bj...@roguewave.com> wrote:
>>
>>
>> I've been looking into loading and invoking Tuscany services from a
>> container other than Axis, and have found what seems to be erroneous
>> service access from Axis. In particular the CppBigBank TuscanySCA CPP
>> service. The URL used to invoke the service is:
>> http://localhost/bigbank.phpwsclient/bigwelcome.php , which invokes the
>> AccountServiceComponent. Looking at the bigbank.account.composite, the
>> AccountService service is the service for the AccountServiceComponent
>> component. The AccountService has an empty <binding.ws/> element, but
>> nothing specifying how to access the AccountServiceComponent remotely.
>> Nor are there any relavent <reference/> elements.
I'm not sure I understand the question or issue. If AccountService has a 
<binding.ws> then it makes AccountServiceComponent remotely accessible 
through a Web service binding.


>>
>> Is it correct to be able to invoke the AccountService as a web service
>> if there are no <binding.ws/> elements?

According to the SCA spec, a service with no binding specified is 
available through the SCA default binding. If I remember correctly 
(having not looked at the C++ code for a while) the Tuscany Native 
implementation of the SCA default binding is simply reusing the Web 
Service binding (which is not very optimized, but convenient and standard).

Does that help explain why a service with no binding specified can be 
accessed through SOAP?

>>
>> I can see that this works because the client puts the component name and
>> service name in the http URL, allowing the component and service to be
>> retrieved. The Axis2Service code gets a Component, the Composite, the
>> CompositeService (which is a Component ???). Then from the
>> CompositeService, it gets a Composite (again??), a Reference, a Binding,
>> and then a WSServiceProxy which is invoked. But logically, I would
>> envision Web Service invocations working by obtaining the Composite, the
>> Component, the Service, and then the Binding, on which you would get the
>> ServiceWrapper. (or something similar with a reference)
>>
>> Am I understanding this correctly? Does the option I suggest make sense,
>> or am I missing something?

The form of default URIs for deployed services is described in the SCA 
assembly spec 1.0. The Tuscany Native runtime was implementing 0.96, I 
think it needs to be updated to implement what's in the spec (a slightly 
different combination of component, service and binding names IIRC).

I think that the logic that navigates the SCA assembly model objects to 
get to the right service and servicewrapper can be simplified, but I'd 
suggest to look at this in the context of moving the SCA assembly spec 
1.0. In 0.96, we had:
- the component providing the actual service
- a composite service (very similar to a second "gateway" component with 
a fixed service and reference), configured with a binding, and wired to 
the above service

In 1.0 we have:
- the component providing the actual service, which can be configured 
with a binding directly
- as another syntax option, the ability to configure the service with a 
binding in a separate service promotion element

So 2 separate entities in 0.96 become one entity with multiple syntax 
options in 1.0, leading to simplification opportunities in the SCA 
logical model and the logic that navigates it.

>>
>> What would be really cool would be to have a runtime service invocation
>> map, where you map the operation name (or some other piece of info
>> retrieved from the SOAP message) to the ServiceWrapper. So runtime
>> invocation would just involve a map lookup and an invocation of the
>> ServiceWrapper.

This sounds like a good optimization.

>>
>> --------------------
>> Brady Johnson
>> Lead Software Developer - HydraSCA
>> Rogue Wave Software - brady.johnson@roguewave.com
>
>
> Hi, a point about the URL in your post (
> http://localhost/bigbank.phpwsclient/bigwelcome.php). This refers to a 
> PHP
> file that is part of a PHP SCA client intended to show how PHP SCA/SCA 
> can
> be used to invoke CPP SCA. I know that that's not the meat of your 
> question
> but I thought I would point out why this PHP file is there.
>
> Simon
>

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: What services are Web Service accessable

Posted by Simon Laws <si...@googlemail.com>.
On 7/12/07, Brady Johnson <bj...@roguewave.com> wrote:
>
>
> I've been looking into loading and invoking Tuscany services from a
> container other than Axis, and have found what seems to be erroneous
> service access from Axis. In particular the CppBigBank TuscanySCA CPP
> service. The URL used to invoke the service is:
> http://localhost/bigbank.phpwsclient/bigwelcome.php , which invokes the
> AccountServiceComponent. Looking at the bigbank.account.composite, the
> AccountService service is the service for the AccountServiceComponent
> component. The AccountService has an empty <binding.ws/> element, but
> nothing specifying how to access the AccountServiceComponent remotely.
> Nor are there any relavent <reference/> elements.
>
> Is it correct to be able to invoke the AccountService as a web service
> if there are no <binding.ws/> elements?
>
> I can see that this works because the client puts the component name and
> service name in the http URL, allowing the component and service to be
> retrieved. The Axis2Service code gets a Component, the Composite, the
> CompositeService (which is a Component ???). Then from the
> CompositeService, it gets a Composite (again??), a Reference, a Binding,
> and then a WSServiceProxy which is invoked. But logically, I would
> envision Web Service invocations working by obtaining the Composite, the
> Component, the Service, and then the Binding, on which you would get the
> ServiceWrapper. (or something similar with a reference)
>
> Am I understanding this correctly? Does the option I suggest make sense,
> or am I missing something?
>
> What would be really cool would be to have a runtime service invocation
> map, where you map the operation name (or some other piece of info
> retrieved from the SOAP message) to the ServiceWrapper. So runtime
> invocation would just involve a map lookup and an invocation of the
> ServiceWrapper.
>
> --------------------
> Brady Johnson
> Lead Software Developer - HydraSCA
> Rogue Wave Software - brady.johnson@roguewave.com


Hi, a point about the URL in your post (
http://localhost/bigbank.phpwsclient/bigwelcome.php). This refers to a PHP
file that is part of a PHP SCA client intended to show how PHP SCA/SCA can
be used to invoke CPP SCA. I know that that's not the meat of your question
but I thought I would point out why this PHP file is there.

Simon