Description
I'm trying to build a reasonably complex scenario with SCA (0.95), and
wondering why I have to repeat myself so many times when I define
services.
Let's imagine that I want to build a simple Quoting service application.
Here's what I'll want to
do:
Step 1. define a Quote component type, in the component type define a
service, give it a name, specify its interface.
Step 2. create a component of that type in a composite, indicate that I
want my service visible outside the composite
Step 3. take my composite to a system, configure an instance of it, bind
my service to a SOAP endpoint
Here's what it looks like with SCA 0.95:
Step 1:
Quote.componentType
<componentType ...>
<service name="QuoteService">
<interface.wsdl
interface="http://www.whatever.org/QuoteService/#wsdl.portType(Quote)"/>
</service>
...
</componentType>
Step 2:
QuotingEngine.composite
<composite...>
<service name="QuoteService">
<interface.wsdl
interface="http://www.whatever.org/QuoteService/#wsdl.portType(Quote)"/>
<reference>QuotingEngineGorpImpl/QuoteService</reference>
</service>
...
</composite>
Step 2:
MyDeployedAndConfiguredQuotingSystem.composite
<composite...>
<service name="QuoteService">
<interface.wsdl
interface="http://www.whatever.org/QuoteService/#wsdl.portType(Quote)"/>
<binding.ws
port="http://www.whatever.org/QuoteService/#wsdl.endpoint(QuoteService/QuoteSOAPPort)"/>
<reference>MyDeployedQuotingEngine/QuoteService</reference>
</service>
...
</composite>
Why do I need to repeat the definition of
QuoteService three times in this example?
The SCA specification
should not force me to repeat service definitions just to
publish/promote them out of a composite.