You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Tobias Arnold <ar...@web.de> on 2008/09/02 22:18:23 UTC

Using one composite as an implementation for two components

Hi all,

i tried to use the same composite as an implementation for two different
components. In detail i tried to have two instances of the store example
sharing the same currency converter. When i start the nodes for the two
shops no erros are displayed. But in one of the shops the currency converter
doesn't work (catalog isn't displayed). If i undeploy the working shop, the
other shop works too, but not both at the same time.

Isn't it allowed to use the same composite as an implementation for two
components?

 Here are the composites:

store1:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store2"
        xmlns:store3="http://store3"
        name="store2">

    <component name="Store">
        <t:implementation.widget location="uiservices/store.html"/>
        <service name="Widget">
            <t:binding.http uri="/store"/>
        </service>
        <reference name="catalog" target="Catalog">
             <t:binding.jsonrpc/>
         </reference>
         <reference name="shoppingCart" target="ShoppingCart/Cart">
             <t:binding.atom/>
         </reference>
         <reference name="shoppingTotal" target="ShoppingCart/Total">
             <t:binding.jsonrpc/>
         </reference>
    </component>

    <component name="Catalog">
        <implementation.java class="services.FruitsCatalogImpl"/>
        <property name="currencyCode">USD</property>
        <service name="Catalog">
            <t:binding.jsonrpc/>
           </service>
        <reference name="currencyConverter"
target="CurrencyConverter/CurrencyService"/>
    </component>

    <component name="ShoppingCart">
        <implementation.java class="services.ShoppingCartImpl"/>
        <service name="Cart">
            <t:binding.atom uri="/ShoppingCart/Cart"/>
        </service>
        <service name="Total">
            <t:binding.jsonrpc/>
        </service>
    </component>

    <component name="CurrencyConverter">
        <implementation.composite name="store3:store3"/>
    </component>

</composite>


store2:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store1"
        xmlns:store3="http://store3"
        name="store1">

    <component name="Store1">
        <t:implementation.widget location="uiservices/store.html"/>
        <service name="Widget">
            <t:binding.http uri="/store"/>
        </service>
        <reference name="catalog" target="Catalog1/Catalog2">
             <t:binding.jsonrpc/>
         </reference>
         <reference name="shoppingCart" target="ShoppingCart1/Cart">
             <t:binding.atom/>
         </reference>
         <reference name="shoppingTotal" target="ShoppingCart1/Total">
             <t:binding.jsonrpc/>
         </reference>
    </component>

    <component name="Catalog1">
        <implementation.java class="services.FruitsCatalogImpl"/>
        <property name="currencyCode">USD</property>
        <service name="Catalog2">
            <t:binding.jsonrpc/>
           </service>
        <reference name="currencyConverter"
target="CurrencyConverter1/CurrencyService"/>
    </component>

    <component name="ShoppingCart1">
        <implementation.java class="services.ShoppingCartImpl"/>
        <service name="Cart">
            <t:binding.atom uri="/ShoppingCart1/Cart"/>
        </service>
        <service name="Total">
            <t:binding.jsonrpc/>
        </service>
    </component>

    <component name="CurrencyConverter1">
        <implementation.composite name="store3:store3"/>
    </component>

</composite>

shared:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store3"
        name="store3">

    <service name="CurrencyService" promote="CurrencyConverter3">
        <interface.java interface="services.CurrencyConverter"/>
    </service>

    <component name="CurrencyConverter3">
        <implementation.java class="services.CurrencyConverterImpl"/>
    </component>

</composite>


Thanks,
Tobias

Re: Using one composite as an implementation for two components

Posted by Tobias Arnold <ar...@web.de>.
Hi Raymond,

I opened a Ticket: https://issues.apache.org/jira/browse/TUSCANY-2584

Tobias

2008/9/4 Raymond Feng <en...@gmail.com>

> Would you please open a JIRA at
> https://issues.apache.org/jira/browse/TUSCANY to track it? It would be
> great if you can attach a test case to reproduce the problem.
>
> Thanks,
> Raymond
>
> From: Tobias Arnold
> Sent: Tuesday, September 02, 2008 1:18 PM
> To: user@tuscany.apache.org
> Subject: Using one composite as an implementation for two components
>
>
>
> Hi all,
>
> i tried to use the same composite as an implementation for two different
> components. In detail i tried to have two instances of the store example
> sharing the same currency converter. When i start the nodes for the two
> shops no erros are displayed. But in one of the shops the currency converter
> doesn't work (catalog isn't displayed). If i undeploy the working shop, the
> other shop works too, but not both at the same time.
>
> Isn't it allowed to use the same composite as an implementation for two
> components?
>
> Here are the composites:
>
> store1:
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
>       xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
>       targetNamespace="http://store2"
>       xmlns:store3="http://store3"
>       name="store2">
>
>   <component name="Store">
>       <t:implementation.widget location="uiservices/store.html"/>
>       <service name="Widget">
>           <t:binding.http uri="/store"/>
>       </service>
>       <reference name="catalog" target="Catalog">
>            <t:binding.jsonrpc/>
>        </reference>
>        <reference name="shoppingCart" target="ShoppingCart/Cart">
>            <t:binding.atom/>
>        </reference>
>        <reference name="shoppingTotal" target="ShoppingCart/Total">
>            <t:binding.jsonrpc/>
>        </reference>
>   </component>
>
>   <component name="Catalog">
>       <implementation.java class="services.FruitsCatalogImpl"/>
>       <property name="currencyCode">USD</property>
>       <service name="Catalog">
>           <t:binding.jsonrpc/>
>          </service>
>       <reference name="currencyConverter"
> target="CurrencyConverter/CurrencyService"/>
>   </component>
>
>   <component name="ShoppingCart">
>       <implementation.java class="services.ShoppingCartImpl"/>
>       <service name="Cart">
>           <t:binding.atom uri="/ShoppingCart/Cart"/>
>       </service>
>       <service name="Total">
>           <t:binding.jsonrpc/>
>       </service>
>   </component>
>
>   <component name="CurrencyConverter">
>       <implementation.composite name="store3:store3"/>
>   </component>
>
> </composite>
>
>
> store2:
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
>       xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
>       targetNamespace="http://store1"
>       xmlns:store3="http://store3"
>       name="store1">
>
>   <component name="Store1">
>       <t:implementation.widget location="uiservices/store.html"/>
>       <service name="Widget">
>           <t:binding.http uri="/store"/>
>       </service>
>       <reference name="catalog" target="Catalog1/Catalog2">
>            <t:binding.jsonrpc/>
>        </reference>
>        <reference name="shoppingCart" target="ShoppingCart1/Cart">
>            <t:binding.atom/>
>        </reference>
>        <reference name="shoppingTotal" target="ShoppingCart1/Total">
>            <t:binding.jsonrpc/>
>        </reference>
>   </component>
>
>   <component name="Catalog1">
>       <implementation.java class="services.FruitsCatalogImpl"/>
>       <property name="currencyCode">USD</property>
>       <service name="Catalog2">
>           <t:binding.jsonrpc/>
>          </service>
>       <reference name="currencyConverter"
> target="CurrencyConverter1/CurrencyService"/>
>   </component>
>
>   <component name="ShoppingCart1">
>       <implementation.java class="services.ShoppingCartImpl"/>
>       <service name="Cart">
>           <t:binding.atom uri="/ShoppingCart1/Cart"/>
>       </service>
>       <service name="Total">
>           <t:binding.jsonrpc/>
>       </service>
>   </component>
>
>   <component name="CurrencyConverter1">
>       <implementation.composite name="store3:store3"/>
>   </component>
>
> </composite>
>
> shared:
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
>       xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
>       targetNamespace="http://store3"
>       name="store3">
>
>   <service name="CurrencyService" promote="CurrencyConverter3">
>       <interface.java interface="services.CurrencyConverter"/>
>   </service>
>
>   <component name="CurrencyConverter3">
>       <implementation.java class="services.CurrencyConverterImpl"/>
>   </component>
>
> </composite>
>
>
> Thanks,
> Tobias
>

Re: Using one composite as an implementation for two components

Posted by Raymond Feng <en...@gmail.com>.
Would you please open a JIRA at 
https://issues.apache.org/jira/browse/TUSCANY to track it? It would be great 
if you can attach a test case to reproduce the problem.

Thanks,
Raymond

From: Tobias Arnold
Sent: Tuesday, September 02, 2008 1:18 PM
To: user@tuscany.apache.org
Subject: Using one composite as an implementation for two components


Hi all,

i tried to use the same composite as an implementation for two different 
components. In detail i tried to have two instances of the store example 
sharing the same currency converter. When i start the nodes for the two 
shops no erros are displayed. But in one of the shops the currency converter 
doesn't work (catalog isn't displayed). If i undeploy the working shop, the 
other shop works too, but not both at the same time.

Isn't it allowed to use the same composite as an implementation for two 
components?

 Here are the composites:

store1:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store2"
        xmlns:store3="http://store3"
        name="store2">

    <component name="Store">
        <t:implementation.widget location="uiservices/store.html"/>
        <service name="Widget">
            <t:binding.http uri="/store"/>
        </service>
        <reference name="catalog" target="Catalog">
             <t:binding.jsonrpc/>
         </reference>
         <reference name="shoppingCart" target="ShoppingCart/Cart">
             <t:binding.atom/>
         </reference>
         <reference name="shoppingTotal" target="ShoppingCart/Total">
             <t:binding.jsonrpc/>
         </reference>
    </component>

    <component name="Catalog">
        <implementation.java class="services.FruitsCatalogImpl"/>
        <property name="currencyCode">USD</property>
        <service name="Catalog">
            <t:binding.jsonrpc/>
           </service>
        <reference name="currencyConverter" 
target="CurrencyConverter/CurrencyService"/>
    </component>

    <component name="ShoppingCart">
        <implementation.java class="services.ShoppingCartImpl"/>
        <service name="Cart">
            <t:binding.atom uri="/ShoppingCart/Cart"/>
        </service>
        <service name="Total">
            <t:binding.jsonrpc/>
        </service>
    </component>

    <component name="CurrencyConverter">
        <implementation.composite name="store3:store3"/>
    </component>

</composite>


store2:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store1"
        xmlns:store3="http://store3"
        name="store1">

    <component name="Store1">
        <t:implementation.widget location="uiservices/store.html"/>
        <service name="Widget">
            <t:binding.http uri="/store"/>
        </service>
        <reference name="catalog" target="Catalog1/Catalog2">
             <t:binding.jsonrpc/>
         </reference>
         <reference name="shoppingCart" target="ShoppingCart1/Cart">
             <t:binding.atom/>
         </reference>
         <reference name="shoppingTotal" target="ShoppingCart1/Total">
             <t:binding.jsonrpc/>
         </reference>
    </component>

    <component name="Catalog1">
        <implementation.java class="services.FruitsCatalogImpl"/>
        <property name="currencyCode">USD</property>
        <service name="Catalog2">
            <t:binding.jsonrpc/>
           </service>
        <reference name="currencyConverter" 
target="CurrencyConverter1/CurrencyService"/>
    </component>

    <component name="ShoppingCart1">
        <implementation.java class="services.ShoppingCartImpl"/>
        <service name="Cart">
            <t:binding.atom uri="/ShoppingCart1/Cart"/>
        </service>
        <service name="Total">
            <t:binding.jsonrpc/>
        </service>
    </component>

    <component name="CurrencyConverter1">
        <implementation.composite name="store3:store3"/>
    </component>

</composite>

shared:
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
        xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
        targetNamespace="http://store3"
        name="store3">

    <service name="CurrencyService" promote="CurrencyConverter3">
        <interface.java interface="services.CurrencyConverter"/>
    </service>

    <component name="CurrencyConverter3">
        <implementation.java class="services.CurrencyConverterImpl"/>
    </component>

</composite>


Thanks,
Tobias