You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Alexander Blotny <Al...@fokus.fraunhofer.de> on 2010/08/13 18:44:24 UTC
OSGi implementation
Hi,
I am just experimenting a little bit with the implementation.osgi stuff
taking some samples as start...
I would like to have the following scenario. Two bundles are started in the
OSGi framework and are registered in for SCA. One bundle is consuming a
service that is implemented by the other bundle. I do not get an idea how
this can be done or maybe it is not possible.
So from the samples I have an OSGI-INF/sca folder with a bundle.composite
and a bundle.componentType file.
bundle.composite:
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://calculator.dosgi"
name="SMSComposite">
<component name="SMSComponent">
<tuscany:implementation.osgi
bundleSymbolicName="DeveloperGardenSDK.SMS" bundleVersion="0.0.1" />
<service name="smsService">
<binding.ws uri="http://localhost:8082/SMSService"/>
</service>
</component>
</composite>
bundle.componentType:
<componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
<service name="smsService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.developergarden.sms.SMS"/>
</service>
</componentType>
Furthermore the service is registered in the Activator class. The
registration is working and I am also able to consume the service via SOAP.
Now I want to have a second bundle that is able to consume the service.
Following files are created:
bundle.composite:
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://calculator.dosgi"
name="ReminderComposite">
<component name="ReminderComponent">
<tuscany:implementation.osgi bundleSymbolicName="Reminder_SCA"
bundleVersion="1.0" />
<service name="ReminderService">
<binding.ws uri="http://localhost:8082/ReminderService"/>
</service>
<reference name="smsService">
<binding.ws uri="http://localhost:8082/SMSService"/>
</reference>
</component>
</composite>
bundle.componentType:
<componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
<service name="ReminderService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.service.sca.reminder.ReminderService
"/>
</service>
<reference name="smsService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.developergarden.sms.SMS"/>
</reference>
</componentType>
Again this service is registered via the Activator class. How I am getting
now the SMS service in the Java Code? I tried some things I have found in
other samples.
So the ReminderService implementation looks like that:
public class ReminderServiceImpl implements ReminderService { private
SMS smsService; @Reference public void setSmsService(SMS
smsService){ this.smsService = smsService; } @Override
public boolean startReminder(String user) { return
smsService.sendSMS("xy", "number", "Hallo", "Reminder"); } }
This structure is taken from another sample I looked at. The smsService is
null at this point.
I know that I could get the SMS service over OSGi reference stuff but I want
to use SCA stuff.
Please tell me if my scenario is wrong (or stupid) or if this is just not
working.
Thanks in advance.
greetings,
Alex