Hello,

we implemented some kind of registering and broadcasting for one server and 
multiple clients
running on different hosts using tuscany 1.3.1

The server implements two interfaces:

The server interfaces:
UpdateProvider for initiating the broadcast and 
UpdateRegistry for the clients to register to the server.

Here are the interfaces for the server
@Remotable
public interface UpdateProvider {
        public void broadcast(String e);
}

and

@Remotable
@Callback(UpdateListener.class)
public interface UpdateRegistry {

        void register();
}

The server implementation:

public class UpdateServiceImpl implements UpdateProvider, UpdateRegistry {

        @Callback
        protected UpdateListener updateListener;

        private static List<UpdateListener> listeners = new 
Vector<UpdateListener>();

        public void broadcast(String e) {
                for (UpdateListener listener: listeners)
                        listener.receiveUpdate(e)
        }

        public void register() {
                listeners.add(updateListener);
        }
}

and the server composite:

<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
        targetNamespace="http://updateservice";
        xmlns:hw="http://updateservice";
        name="Updateservice">

        <component name="UpdateServiceImplComp">
                <implementation.java class="test.UpdateServiceImpl"/>
                <service name="UpdateProvider">
                        <binding.ws/>
                </service>
                <service name="UpdateRegistry">
                        <binding.ws/>
                        <callback>
                                <binding.ws/>
                        </callback>
                </service>
        </component>
</composite>


The clients have one interface for receiving the broadcasted event:

@Remotable
public interface UpdateListener {
        void receiveUpdate(String re);
}

the client implementation

@Scope("COMPOSITE")
public class UpdateListenerImpl implements UpdateListener {

        @Reference
        protected UpdateRegistry updateRegistry;

        public void receiveUpdate(String e) {}
        public void init(){     updateRegistry.register();      }
}

and the client composite:

<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
        targetNamespace="http://updatelistener";
        xmlns:hw="http://updatelistener";
        name="UpdateListener">

        <component name="UpdateListenerImplCompHostA">
                <implementation.java class="test.UpdateListenerImpl"/>
                <service name="UpdateListener">
                        <binding.ws/>
                </service>
                <reference name="updateRegistry" 
target="UpdateServiceImplComp/UpdateRegistry">
                        <binding.ws/>
                        <callback>
                                <binding.ws 
uri="http://hosta:5501/UpdateListenerImplCompHostA/UpdateListener"/>
                        </callback>
                </reference>
        </component>
</composite>

Everything works fine,
the clients running on different hosts
receive the broadcasted events.

The only "problem":
we got the following warnings:


26.06.2009 14:25:52 org.apache.tuscany.sca.node.launcher.NodeLauncher main
INFO: Apache Tuscany SCA Node starting...
26.06.2009 14:25:52 org.apache.tuscany.sca.node.launcher.NodeLauncher main
INFO: SCA Node configuration: 
http://localhost:9990/node-config/UpdateserviceNode
26.06.2009 14:25:53 org.apache.tuscany.sca.node.impl.NodeImpl 
INFO: Creating node: http://localhost:9990/node-config/UpdateserviceNode
26.06.2009 14:25:53 org.apache.tuscany.sca.node.impl.NodeImpl configureNode
INFO: Loading contribution: file:/./components/updateservice.jar
26.06.2009 14:25:55 org.apache.tuscany.sca.node.impl.NodeImpl configureNode
INFO: Loading composite: 
http://localhost:9990/composite-resolved/composite:updateservice;http://updateservice;Updateservice
26.06.2009 14:25:55 
org.apache.tuscany.sca.assembly.builder.impl.ComponentConfigurationBuilderImpl
WARNUNG: Reference not found for component reference: Component = 
UpdateServiceImplComp Reference = UpdateRegistry
26.06.2009 14:25:55 
org.apache.tuscany.sca.assembly.builder.impl.CompositeBindingURIBuilderImpl
WARNUNG: Reference not found for component reference: Component = 
UpdateServiceImplComp Reference = UpdateRegistry
26.06.2009 14:25:55 
org.apache.tuscany.sca.assembly.builder.impl.CompositeBindingURIBuilderImpl
WARNUNG: Multiple bindings with the same name for a service: Binding = 
UpdateRegistry Service =UpdateRegistry Binding = {2}
26.06.2009 14:25:56 org.apache.tuscany.sca.node.impl.NodeImpl start
INFO: Starting node: http://localhost:9990/node-config/UpdateserviceNode
26.06.2009 14:25:57 org.apache.tuscany.sca.http.jetty.JettyServer 
addServletMapping
INFO: Added Servlet mapping: 
http://roadrunner:5000/UpdateServiceImplComp/UpdateProvider
26.06.2009 14:25:57 org.apache.tuscany.sca.http.jetty.JettyServer 
addServletMapping
INFO: Added Servlet mapping: 
http://roadrunner:5000/UpdateServiceImplComp/UpdateRegistry
26.06.2009 14:25:57 org.apache.tuscany.sca.node.launcher.NodeLauncher main
INFO: SCA Node started.
26.06.2009 14:25:57 org.apache.tuscany.sca.node.launcher.NodeLauncher main
INFO: Press enter to shutdown.

Is it possible to avoid this warnings somehow ?

Mit freundlichem Gruß / Kind regards

Martin Thoma

Reply via email to