tuscany-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Santiago Miguel Aranda Rojas <santiago.aranda.telv...@gmail.com>
Subject Re: Fwd: Problem with "implementation.osgi" reference
Date Fri, 19 Jun 2009 09:37:47 GMT
Hello.

I have downloaded M3RC1 but I have the same errors. I can not run this in
Eclipse but I think it is my problem. I run this distribution outside of
Eclipse and all modules are running. But when I try to run my TestService
bundle I have an error

GRAVE: org.oasisopen.sca.ServiceRuntimeException: Deployment composite
OSGI-INF/
sca/bundle.composite cannot be found within contribution bundleentry://181/
java.lang.IllegalStateException: org.oasisopen.sca.ServiceRuntimeException:
Depl
oyment composite OSGI-INF/sca/bundle.composite cannot be found within
contributi
on bundleentry://181/

I think composite.file is always compulsory. It is not enough with
bunde.componentType as you said. Well, I put one composite file in order to
test it

<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/TestService/src/main/resources/TestService">

  <sca:component name="TestServiceComponent">
   <sca:implementation.osgi bundleSymbolicName="TestService"
bundleVersion="1.0.0"/>
  </sca:component>
</sca:composite>

and I have a new error. I guess tuscany doesn´t like "implementation.osgi"
componenents. When I used 2.02M I had another different error.

ADVERTENCIA: Element {http://docs.oasis-open.org/ns/opencsa/sca/200903}*
implement*
*ation.osgi cannot be processed*. ([row,col {unknown-source}]: [4,5])
19-jun-2009 11:05:01
org.apache.tuscany.sca.contribution.processor.ExtensibleStA
XArtifactProcessor
ADVERTENCIA: Element {
http://docs.oasis-open.org/ns/opencsa/sca/200903}implement
ation.osgi cannot be processed. ([row,col {unknown-source}]: [4,5])
19-jun-2009 11:05:01
org.apache.tuscany.sca.assembly.builder.impl.ComponentConfi
gurationBuilderImpl
GRAVE: No implementation for component: Component = TestServiceComponent
19-jun-2009 11:05:01
org.apache.tuscany.sca.assembly.builder.impl.CompositeBindi
ngURIBuilderImpl
GRAVE: No implementation for component: Component = TestServiceComponent
19-jun-2009 11:05:01 org.apache.tuscany.sca.node.osgi.impl.NodeManager
bundleSta
rted
GRAVE: org.oasisopen.sca.ServiceRuntimeException: No implementation for
componen
t: Component = TestServiceComponent
java.lang.IllegalStateException: org.oasisopen.sca.ServiceRuntimeException:
No i
mplementation for component: Component = TestServiceComponent


Besides, I think I will not be able to wire one SCA component osgi with
other SCA component java so I want to try other thing. I know tuscany is
using its own ClassLoader in order to load classes it needs. But my original
problem was I can not share a instance of a Singleton Class between one
object loaded by default osgi ClassLoader and other object loaded tuscany
ClassLoader.

1) I create an instance of one Class that is not modeled with Tuscany
2) I have other Class that will be a Singleton. Only there will be one
instance of this class
3) I recover the instance of Singleton class from the instance of step 1
4) A CalculatorImpl instance is created when someone invoke a method from WS
(this is a class modeled with Tuscany)
5) CalculatorImpl should recover the same instance of Singleton class

But CalculatorImpl and class of step 1 were loaded by different classLoaders
so they will load the Singleton Class twice. So They will have different
instances of Singleton class although it was a singleton.






2009/6/18 Santiago Miguel Aranda Rojas <santiago.aranda.telvent@gmail.com>

>  Well I will try M3RC1 tomorrow. I hope fix some errors with that
>
> Thank you
>
>
>
>
>
> ----- Original Message -----
> *From:* Raymond Feng <enjoyjava@gmail.com>
> *To:* user@tuscany.apache.org ; santiago.aranda@telvent.com
> *Sent:* Thursday, June 18, 2009 5:47 PM
> *Subject:* Re: Fwd: Problem with "implementation.osgi" reference
>
> Which level of the Tuscany 2.x code are you using? The various issues you
> ran into seem to have been fixed before. Can you try our M3 RC1?
>
> http://people.apache.org/~antelder/tuscany/2.0-M3-RC1/
>
>  Thanks,
> Raymond
>
>
>  *From:* Santiago Miguel Aranda Rojas <santiago.aranda.telvent@gmail.com>
> *Sent:* Thursday, June 18, 2009 3:05 AM
> *To:* user@tuscany.apache.org
> *Subject:* Re: Fwd: Problem with "implementation.osgi" reference
>
> I am checking your comments. I can not remove bundle.composite file from
> TestService bundle because tuscany is not working without this file.
>
> I have this
>
>  Caused by: java.lang.NullPointerException
> *at
> org.apache.tuscany.sca.node.osgi.impl.NodeFactoryImpl.configureNode(NodeFactoryImpl.java:440)
> *
> at
> org.apache.tuscany.sca.node.osgi.impl.NodeFactoryImpl.access$2(NodeFactoryImpl.java:351)
> at
> org.apache.tuscany.sca.node.osgi.impl.NodeFactoryImpl$NodeImpl.<init>(NodeFactoryImpl.java:574)
>
> and the source code about this line is
>
>   if (composite == null) {
>             composite = getDefaultComposite(configuration, workspace);
>         }
>
>         // Find the composite in the given contributions
>         boolean found = false;
>         Artifact compositeFile = contributionFactory.createArtifact();
>         compositeFile.setUnresolved(true);
>         compositeFile.setURI(composite.getURI());
>         for (Contribution contribution : workspace.getContributions()) {
>             ModelResolver resolver = contribution.getModelResolver();
>             //            for (Artifact artifact :
> contribution.getArtifacts()){
>             //                logger.log(Level.INFO,"artifact - " +
> artifact.getURI());
>             //            }
>             Artifact resolvedArtifact =
> resolver.resolveModel(Artifact.class, compositeFile);
>             //            if (!resolvedArtifact.isUnresolved() &&
> resolvedArtifact.getModel() instanceof Composite) {
>
> *            if (!composite.isUnresolved()) {  ---> This is line 440*
>
>                 // The composite content was passed into the node and read
> into a composite model,
>                 // don't use the composite found in the contribution, use
> that composite, but just resolve
>                 // it within the context of the contribution
>                 compositeProcessor.resolve(composite, resolver);
>
>             } else {
>
>                 // Use the resolved composite we've found in the
> contribution
>                 composite = (Composite)resolvedArtifact.getModel();
>             }
>             found = true;
>             //            break;
>             //          }
>         }
>
>
> I guess composite variable is not null in the first iteration. But it is
> null when* composite = (Composite)resolvedArtifact.getModel();* is
> executed. So I guess is another problem related with "contribution" because
> there is a comment about that *"// Use the resolved composite we've found
> in the contribution"*
> *
> *
> Besides, while I fix these things I am going to use java code in order to
> register the SCA node. I have checked all your comments about
> bundle.composite and bundle.componentType at TestService and Calculator
> bundle. When I invoke to a method of CalculatorService with a WS client I
> have another problem.
>
> This code of CalculatorServiceImpl
>
>  public class CalculatorServiceImpl implements CalculatorService {
>  private AddService addService;
>  private TestService testService;
>
>         public int add(int param1, int param2) {
> *System.out.println (testService.sayHello());  --> I have an error when
> this line is executed*
> return addService.add(param1, param2);
> }
>
>
> public AddService getAddService() {
> return addService;
> }
>
> @Reference
> public void setAddService(AddService addService) {
> this.addService = addService;
> }
>
> public TestService getTestService() {
> return testService;
> }
>
> @Reference
> public void setTestService(TestService testService) {
> this.testService = testService;
> }
> }
>
>
> This is the error . The testService instance is not null but it is not
> wired to TestService.  I have registered the Osgi Service registry using
> this code in the Activator of TestService bundle. I think this is neccesary.
>
> ***arg0.registerService(TestService.class.getName(), new
> TestServiceImpl(), null);  *
>
>
>
> Caused by: org.oasisopen.sca.ServiceUnavailableException: Unable to create
> SCA binding invoker for local target CalculatorComponent reference
> testService (bindingURI=null operation=sayHello)
> at
> org.apache.tuscany.sca.binding.sca.provider.RuntimeSCAReferenceBindingProvider.createInvoker(RuntimeSCAReferenceBindingProvider.java:200)
>
>
>
> ---------------------------------------------
>
>
>
> 2009/6/17 Raymond Feng <enjoyjava@gmail.com>
>
>> Hi,
>>
>> Please see my comments inline.
>>
>> Thanks,
>> Raymond
>>
>> ------------------------------------
>> BUNDLE CALCULATOR
>> ------------------------------------
>> *****OSGI-INF/sca/bundle.composite. Two java components (Calculator and
>> AddService) and one OSGi component (TestService)
>>
>> <rfeng>This is good.</rfeng>
>>
>>
>> <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>
>>
>>
>>
>>
>> *******OSGI-INF/sca/bundle.componentType
>> <rfeng>You don't need to provide this file. The componentType is only
>> needed for the OSGi component.</rfeng>
>>
>>
>> <componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
>>              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>              xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
>>   <!-- The service elment defines an SCA view of the OSGi service -->
>>   <service name="CalculatorService">
>>       <!-- The interface will be mapped into the OSGi service class -->
>>       <interface.java
>> interface="es.amivital.calculatorservice2.CalculatorService"/>
>>       <!-- The list of OSGi properties -->
>>
>>   </service>
>> </componentType>
>>
>> -----------------------------------
>> BUNDLE TESTSERVICE
>> -------------------------------------
>>
>>
>> *******OSGI-INF/sca/bundle.componentType
>> <rfeng>This is good.</rfeng>
>>
>>
>> <componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
>>              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>              xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
>>   <!-- The service elment defines an SCA view of the OSGi service -->
>>   <service name="TestService">
>>       <!-- The interface will be mapped into the OSGi service class -->
>>       <interface.java interface="es.amivital.testservice.Test"/>
>>       <!-- The list of OSGi properties -->
>>
>>   </service>
>> </componentType>
>>
>>
>> *****OSGI-INF/sca/bundle.composite
>> <rfeng>This should be removed as the TestServiceComponent has been
>> declared in the calculator bundle composite.</rfeng>
>>
>> <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="TestServiceComponent">
>>  <sca:implementation.java class="es.amivital.testservice.TestImpl"/>
>>  </sca:component>
>> </sca:composite>
>>
>>
>> It is necessary to have a bundle.composite file in TestService?? and
>> bundle.componentType?? Can I remove these files from TestService bundle and
>> put the TestService4s bundle.componentType in the Calculator bundle. You
>> said "Alternatively, you have place the file as
>> OSGI-INF/sca/<bundleSymbolicName>/bundle.componentType in the calculator
>> bundle." Do you mean I can copy TestService4s bundle.componentType into a
>> CalculatorService bundle?
>>
>> <rfeng>Yes</rfeng>
>>
>>
>>
>> Thank you very much
>> -------------------------------------------------------------------
>>
>>
>>
>>
>>
>> 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: santiago.aranda@telvent.com
>>
>> Sent: Tuesday, June 16, 2009 1:33 AM
>>
>> To: user@tuscany.apache.org
>>
>> 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" <enjoyjava@gmail.com>
>> "Raymond Feng"
>> 15/06/2009 18:36
>> Para: <user@tuscany.apache.org>, <santiago.aranda@telvent.com>
>> 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: user@tuscany.apache.org
>> 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 <enjoyjava@gmail.com>
>>
>> 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: user@tuscany.apache.org
>> 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 <enjoyjava@gmail.com>
>>
>> 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: user@tuscany.apache.org
>> Subject: Re: Problem with "implementation.osgi" reference
>>
>>
>> Tuscany 2.02M. The last version I think. April 2009
>> ----- Original Message ----- From: Raymond Feng
>> To: user@tuscany.apache.org
>> 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: santiago.aranda@telvent.com
>> Sent: Tuesday, June 09, 2009 9:15 AM
>> To: user@tuscany.apache.org
>> 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 .
>>
>
>

Mime
View raw message