While I fix the previous error (register a SCA node without code) I am writing the composite and componentType files. I have chose the first option. But I need you check the content if it is possible.
*****OSGI-INF/sca/bundle.composite <sca:composite xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903" name="SensorNetworkManagement" targetNamespace=" http://eclipse.org/SensorNetworkManagement/src/main/resources/SensorNetworkManagement "> <sca:component name="CalculatorComponent"> <sca:implementation.java class="es.amivital.calculatorservice2.CalculatorServiceImpl"/> <sca:service name="CalculatorService"> <sca:binding.ws uri="http://localhost:8085/CalculatorComponent"/> </sca:service> <sca:reference name="addService" target="AddServiceComponent"/> <sca:reference name="testService" target="TestServiceComponent/TestService"/> </sca:component> <sca:component name="AddServiceComponent"> <sca:implementation.java class="es.amivital.calculatorservice2.AddServiceImpl"/> </sca:component> <sca:component name="TestServiceComponent"> <sca:implementation.osgi bundleSymbolicName="TestService" bundleVersion="1.0.0"/> </sca:component> </sca:composite> 2009/6/16 Raymond Feng <[email protected]> > Tuscany checks the OSGi bundle based on one of the following patterns: > * An "SCA-Composite" header in the MANIFEST.MF. It points to an SCA > composite file within the bundle. > * Any files under OSGI-INF/sca. > > In your case, the first bundle contains three java components. The second > bundle contains one OSGi component. There are a few options to get them > work together (CalculatorService with a reference to TestService). > > Option 1: > 1) Place bundle.composite under OSGI-INF/sca in the calculator bundle. The > composite contains 4 components: 3 java components and 1 OSGi component. > The @target for CalculatorService component's testService reference will be > TestService/<serviceName>. > > 2) Place bundle.componentType under OSGI-INF/sca in the test service > bundle. > Alternatively, you have place the file as > OSGI-INF/sca/<bundleSymbolicName>/bundle.componentType in the calculator > bundle. > > In this case, we are going to start one Node. > > Option 2: > 1) Place bundle.composite under OSGI-INF/sca in the calculator bundle. The > composite contains 3 java components > 2) Place bundle.composite under OSGI-INF/sca in the test service bundle. > The composite contains 1 OSGi component. > 3) Place bundle.componentType under OSGI-INF/sca in the test service > bundle. > > In this case, we are going to start two nodes. You can configure the > CalculatorService.testService reference and the OSGi service to use the same > binding (such as RMI, or WS) to communicate. Make sure the interface is > remotable. binding.sca is not working yet. > > Thanks, > Raymond > > From: [email protected] > Sent: Tuesday, June 16, 2009 1:33 AM > To: [email protected] > Subject: Re: Fwd: Problem with "implementation.osgi" reference > > > > > So, I have to attach two files (componentType and composite) to my two > different bundles (TestService and Calculator) and model it as > "implementation.osgi". I have TestService in a bundle I will add these two > file and I will design as "implementation.osgi" . > > But Calculator Service (this is in other bundle) has three components and > they are all "implementation.java" and it is working OK. How can I put a > reference to TestService?? Do I need change "implementation.osgi" in > CalculatorComponent instead "implementation.java"? and is it neccesary for > AddServiceComponent and SubstractService?? > > I will try a example I will copy my files in the email. > > Thank you very much > > Un saludo. > Santiago Miguel Aranda Rojas > Telvent Interactiva > Extension: 35999 > Telefono: 955637418 > > > "Raymond Feng" <[email protected]> > "Raymond Feng" > 15/06/2009 18:36 > Para: <[email protected]>, <[email protected]> > cc: > Asunto: Re: Fwd: Problem with "implementation.osgi" reference > > > > > To access an OSGi service from the SCA component, you will have to provide > SCA configurations for the OSGi bundle so that it becomes an SCA component > using implementation.osgi and the OSGi service becomes an SCA service so > that the Calculator component can wire to that TestService. > > There are two SCA files you to provide to model the OSGi bundle as an SCA > component. > * bundle.componentType to describe what OSGi services or references are > used > in the bundle (We potentially have better approach to introspect the OSGi > bundle to build this up) > * bundle.composite to configure the component, for example, setting the > bindings. > > These files can be in a separate OSGi bundle than the one that owns the > services/references. > > Thanks, > Raymond > > From: Santiago Miguel Aranda Rojas > Sent: Monday, June 15, 2009 4:01 AM > To: [email protected] > Subject: Fwd: Problem with "implementation.osgi" reference > > > > > > > Hi > > > I can not understand this sample because there are many new concepts for > me. > For example "bundle.componentType". There is not too much information about > that . I think I need something more simple. I have attached a picture with > my idea. > > > ** When my SCA service was working I had a main component > "implementacion.java" with two references to another two components > (implementation.java). The main component could be invoked as Web Service. > > > ** Now, I want another reference to a Service (TestService in the picture) > that was registered by another different bundle. But this is a OSGi bundle, > without SCA information, Composite file nor ComponentType file. I mean it > is > a bundle that is registering a service in the OSGi registry. I need have a > instance wired to this OSGi service in the class of the main Component in > order to invoke their methods. > > > TestService testService; > > > //I need testService is not null in order to invoke their methods. > testService.sayHello(); > > > > > I hope you can understand my problem. You can ask me if you want. > > > Thank you very mucha > > > > > > > > > > > > > > > > > > 2009/6/10 Raymond Feng <[email protected]> > > Please see: > > https://svn.apache.org/repos/asf/tuscany/java/sca/samples/dosgi-calculator/ > > https://svn.apache.org/repos/asf/tuscany/java/sca/samples/dosgi-calculator-operations/ > > > http://cwiki.apache.org/confluence/display/TUSCANYWIKI/OSGi+RFC+119+Implementation > > Thanks, > Raymond > > > From: Santiago Miguel Aranda Rojas > Sent: Wednesday, June 10, 2009 12:07 AM > To: [email protected] > Subject: Re: Problem with "implementation.osgi" reference > > > Yes, you are right. I was doing some different tests and I copied you a > wrong composite. I wanted to see if the change of @target made an error in > tuscany. But Tuscany doesn4t recognize this error because I think it > supposes that will be a "remote Component". I can see this in the tuscany > trace > > > ADVERTENCIA: Component reference target not found, it might be a remote > service running elsewhere in the SCA Domain: Composite = > { > http://eclipse.org/SensorNetworkManagement/src/main/resources/SensorNetworkManagement}SensorNetworkManagement<http://eclipse.org/SensorNetworkManagement/src/main/resources/SensorNetworkManagement%7DSensorNetworkManagement> > Service = PruebaComponent > > > > But it is Ok, because the component I want if an Osgi Service registered in > the Osgi registry. > I have fixed the error in @target and it is not working yet. > > > Do you know any example when an <implementation.osgi> component is used? > > > > > I have tried to change "xmlns" tag, but it doesn4t work. > > > <sca:component name="PruebaComponent"> > <sca:implementation.osgi > xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" > bundleSymbolicName="RegistroService" > bundleVersion="1.0.0"> > <sca:properties service="prueba.PruebaImpl"> > </sca:properties> > </sca:implementation.osgi> > </sca:component> > > > Thank you very much. > > > > 2009/6/10 Raymond Feng <[email protected]> > > The @target is pointing to a wrong componentName/serviceName. It should be > "Prueba" instead of "PruebaComponent" as the component name is "Prueba". > > > From: Santiago Miguel Aranda Rojas > Sent: Tuesday, June 09, 2009 1:28 PM > To: [email protected] > Subject: Re: Problem with "implementation.osgi" reference > > > Tuscany 2.02M. The last version I think. April 2009 > ----- Original Message ----- From: Raymond Feng > To: [email protected] > Sent: Tuesday, June 09, 2009 7:12 PM > Subject: Re: Problem with "implementation.osgi" reference > > > Are you using Tuscany/SCA 2.x or 1.x? > > > From: [email protected] > Sent: Tuesday, June 09, 2009 9:15 AM > To: [email protected] > Subject: Problem with "implementation.osgi" reference > > > > Hello > > I want to use an osgi service as a SCA component. But I can not access to > their methods from other Component. I mean I have created a wired instance > to the Osgi Service ($Proxy25). It is not "null" but I can not invoke to > one > method because an error is happening > > --->Unable to create SCA binding invoker for local target > SensorNetworkManagementComponent reference prueba (bindingURI=null > operation=sayHello) > > This is my composite file. I want to have to two components. The first had > a > reference to the second and it is normal "implementation.java". The second > is the SCA component that is representing to the Osgi Service that I want > to > recover. This Osgi Service was registered in the Osgi registry by Activator > class in "RegistroService" bundle. > > <sca:component name="SensorNetworkManagementComponent"> > <sca:implementation.java > > class="es.amivital.sensornetworkmanagement.sca.SensorNetworkManagementServiceImpl"/> > <sca:service name="SensorNetworkManagementService"> > <sca:binding.ws > uri="http://localhost:8085/SensorNetworkManagementComponent"/> > </sca:service> > <sca:reference name="prueba" target="PruebaComponent"/> > </sca:component> > > > <sca:component name="Prueba"> > <sca:implementation.osgi > xmlns="http://tuscany.apache.org/xmlns/sca/1.0" > bundleSymbolicName="RegistroService" > bundleVersion="1.0.0"> > <sca:properties service="prueba.PruebaImpl"> > </sca:properties> > </sca:implementation.osgi> > </sca:component> > > ***The Java code--> The first component. > > public class SensorNetworkManagementServiceImpl implements > SensorNetworkManagementService { > private Prueba prueba; > public Prueba getPrueba() { > return prueba; > } > @Reference > public void setPrueba(Prueba prueba) { > this.prueba = prueba; > } > } > > **Java code --> The second component. It is another bundle that is > registering one simple Osgi Service. The interface was > > public interface Prueba { > public abstract String sayHello(); > > } > > > > > > This instance (prueba) is not null when an outside client invoke to the > first component. But if I invoke to one method of this interface, for > example "prueba.sayHello" I obtained the previous error. > > I have read something about anottations like @AllowsPassByReference or > @Scope, but I don4t know if they are neccesary . >
