I have done all the above, but at Knopflerfish's cmd (using the relevant plugin from knopflerfish's site) when I hit services, I cannot see the registered API that I have registered (with the createExportedServices method). I cannot retrieve information about registered services, if the relevant ones are registered with SAT toolkit?

Thank you very much for the assistance,
Aggelos



Simon J Archer wrote:

Aggelos

[ I'm happy to discuss this here, unless anyone else objects to the discussion happening on the OSGi mailing list. ]

...

I do not see a getImportedServiceNames() method that returns a String[] of service names.
        protected String[] getImportedServiceNames() {
                return new String[] {
                        servicetype1.class.getName(),
                        servicetype2.class.getName(),
                        servicetype3.class.getName()
                };
        }

Without that, your getservicetype1() methods are probably returning null. I am assuming that getservicetype1() is something like:

        private servicetype1 getservicetype1() {
return (servicetype1) getImportedService(servicetype1.class.getName());
        }


This worried me too:

>     protected void createExportedServices(type BCObject) {
> > String[] names = new String[] {
>                 mplampla, mplampla
>          };
>          addExportedServices(names, BCObject, null);
> > }


The names must be fully qualified type names. I guess "mplampla" is just your pseudo-code.

>>Furthermore, if the deactivator is called (for any reason), is the
>>service facility going to be destructed, or the previous instance will
>>be used?

After returning from deactivate(), SAT will automatically unregister all registered services for your. You would only need deactivate() if MyserviceType needed some sort of clean up, for example:

        protected void activate() {
                ...
                MyserviceType service = new MyserviceType(...);
                service.start();
                ...
        }

        protected void deactivate() {
                ...
MyserviceType service = getExportedService(MyserviceType,class.getName());
                service.stop();
                ...
        }


I hope this helps.

Simon



*Aggelos Mpimpoudis <[EMAIL PROTECTED]>*
Sent by: [EMAIL PROTECTED]

07/30/2007 12:12 PM
Please respond to
OSGi Developer Mail List <[email protected]>


        
To
        OSGi Developer Mail List <[email protected]>
cc
        
Subject
        Re: [osgi-dev] Service Tracking Matter



        





Something like, plus the appropriate private service getters methods.
> package ...
>
> imports ...
>
> public class Activator extends BaseBundleActivator {
>     private type1 var1;
>     private type2 var2;
> > > > protected void activate() {
>         var1 = getservicetype1();
>         var2 = getservicetype2();
>         var3 = getservicetype2();
> > try {
>             MyserviceType service = new MyserviceType (var1,
> var2, > var3, > var4);
>             createExportedServices(service);
>         } catch (... e) {
>             // TODO Auto-generated catch block
>             e.printStackTrace();
>         }
> > }
>
>     public void start (){
> > System.out.println("Init Bootstrap");
>     }
>
> > protected void createExportedServices(type BCObject) { > > String[] names = new String[] {
>                 mplampla, mplampla
>          };
>          addExportedServices(names, BCObject, null);
> > }
>
>
>     protected void deactivate() {
>         // TODO Implement deactivate()
>     }
>
>
> }
Although the required bundles are up, I still cannot see results from a
println call..... :(
Furthermore, if the deactivator is called (for any reason), is the
service facility going to be destructed, or the previous instance will
be used?

Thx,
Aggelos



Simon J Archer wrote:
>
> Aggelos
>
> The BaseBundleActivator's activate() method is only called when the
> activator has acquired ALL of the service it requires, as described by
> the getImportedServices() method.  Remember that the required services
> either may or may not be available when the bundle activator starts,
> so the activate()/deactivate() methods are often called asynchronously
> as a result of events published by OSGi.  In some cases the activate()
> method WILL get called as the bundle activator starts, but not
> necessarily.  The goal here is to make sure that there are no start-up
> order dependencies between the bundles.
>
> The activate()/deactivate() methods always execute in pairs, meaning
> that deactivate() only happens after an activate(), and the activate()
> can be re-executed after a deactivate().  As services are
> acquired/released the activate()/deactivate() methods will get called.
>
> If you show me the activator code you have that might help.
>
> Good luck,
>
> Simon
>
>
>
> *Aggelos Mpimpoudis <[EMAIL PROTECTED]>*
> Sent by: [EMAIL PROTECTED]
>
> 07/30/2007 10:47 AM
> Please respond to
> OSGi Developer Mail List <[email protected]>
>
>
> > To
>                  OSGi Developer Mail List <[email protected]>
> cc
> > Subject
>                  Re: [osgi-dev] Service Tracking Matter
>
>
>
> >
>
>
>
>
> Quick question: what the following question means?
> /
> Hook Method:/ You have been activated. This method is implemented by
> bundles that wish to execute *domain specific activation*
>
> Even if I have implemented my activate() method, I think that it doesn't
> execute it's code at all (when the bundle is started).
>
> Thx,
> Aggelos.
>
> Simon J Archer wrote:
> >
> > Hi Aggelos
> >
> > The SAT Bundle Activator Wizard behaves much like the Java Class
> > Wizard in that by default it only offer types that are on the
> > project's classpath.  While using the Import/Export page of the wizard
> > you can actually make it see types visible to the workspace, rather
> > than simply those on the project's classpath... Use the "Edit Type
> > Scope..." button.  Of course, if you deviate from the project
> > classpath then you'll need to update the classpath to ensure that your
> > Activator will compile.  See the following page of the documentation:
> >
> > > > > http://www.vanderleiindustries.com/sat/help/topic/org.eclipse.soda.sat.plugin.activator.doc/books/tooling/activator/wizard-page-02.html
>
> >
> >
> > Please give it another try.  If you continue to have trouble, please
> > reply with the steps you are taking; the clearer the better, since
> > this way I can help get you back on track.
> >
> > Let me know how it goes,
> >
> > Simon
> >
> >
> >
> > *Aggelos Mpimpoudis <[EMAIL PROTECTED]>*
> > Sent by: [EMAIL PROTECTED]
> >
> > 07/27/2007 10:10 AM
> > Please respond to
> > OSGi Developer Mail List <[email protected]>
> >
> >
> > > > To
> >                  OSGi Developer Mail List <[email protected]>
> > cc
> > > > Subject
> >                  Re: [osgi-dev] Service Tracking Matter
> >
> >
> >
> > > >
> >
> >
> >
> >
> > Xmm....Today was an OSGi day. I try several hours now to get along with
> > SAT usage and I think I am getting along with it up until now. One
> > little query though. Using the toolkit of SAT package, I try to import
> > services through the Bundle Activator Wizard, but I cannot-it does not
> > show me my project's packages. How does this works? I have a project
> > with multiple packages (manifest files are constructed with ant
> > directives and saved at a resource directory at project's root). I have
> > scanned through SAT's documents but I didn't find a solution.
> >
> >
> > Thank you,
> > Aggelos Mpimpoudis
> >
> > Simon J Archer wrote:
> > >
> > > Seriously, SAT is easier than the ServiceTracker. I encourage you to
> > > try both and find out for yourself.
> > >
> > > I'm happy to help where I can,
> > >
> > > Simon
> > >
> > >
> > >
> > > *Aggelos Mpimpoudis <[EMAIL PROTECTED]>*
> > >
> > > 07/26/2007 05:17 PM
> > >
> > > > > > To
> > >                  Simon J Archer/Raleigh/[EMAIL PROTECTED]
> > > cc
> > > > > > Subject
> > >                  Re: [osgi-dev] Service Tracking Matter
> > >
> > >
> > >
> > > > > >
> > >
> > >
> > >
> > >
> > > Mr Archer in the past we have spoked in private about SAT and
> eclipsecon
> > > that took place in March ;-)  (remember me?)
> > > I find ServiceTracker a bit easier....Well. I will reconsider it
> > > tonight, after a little time with me vs SAT (again)
> > > I have all the appropriate material.
> > >
> > > I will answer at this mail, prividing my final decision. Thank u
> all!!!
> > >
> > > Thx,
> > > Aggelos Mpimpoudis
> > >
> > > Simon J Archer wrote:
> > > >
> > > > Hello Agellos
> > > >
> > > > When you say, "only when 3 other services are added" I presume you
> > > > mean 3 distinct services, right.  This is EASY to do with SAT....
> > > >  Here's what you'd need:
> > > >
> > > > *public* *class* Activator *extends* BaseBundleActivator {
> > > >         *protected* *void* activate() {
> > > >                 ConfigurationAdmin cm = getConfigurationAdmin();
> > > >                 LogService ls = getLogService();
> > > >                 PackageAdmin pa = getPackageAdmin();
> > > > > > > > FooService service = *new* Foo(cm, ls, pa);
> > > >                 addExportedService(FooService.*class*.getName(),
> > > > service, *null*);
> > > >         }
> > > >
> > > >         *private* ConfigurationAdmin getConfigurationAdmin() {
> > > >                 *return* (ConfigurationAdmin)
> > > > getImportedService(ConfigurationAdmin.*class*.getName());
> > > >         }
> > > >
> > > >         *protected* String[] getImportedServiceNames() {
> > > >                 *return* *new* String[] {
> > > >                         ConfigurationAdmin.*class*.getName(),
> > > >                         LogService.*class*.getName(),
> > > >                         PackageAdmin.*class*.getName()
> > > >                 };
> > > >         }
> > > >
> > > >         *private* LogService getLogService() {
> > > >                 *return* (LogService)
> > > > getImportedService(LogService.*class*.getName());
> > > >         }
> > > >
> > > >         *private* PackageAdmin getPackageAdmin() {
> > > >                 *return* (PackageAdmin)
> > > > getImportedService(PackageAdmin.*class*.getName());
> > > >         }
> > > > }
> > > >
> > > > I am assuming that you need three distinct services:
> > > > ConfigurationAdmin, LogService and PackageAdmin service. When, and
> > > > ONLY WHEN, you have all three will activate() execute.  When you
> lose
> > > > ANY ONE of the three services then deactivate() gets called.  In
> this
> > > > case deactivate() is the inherited no-op implementation from the
> > > > superclass.  When and ONLY WHEN, you have re-acquired all three
> > > > services activate() will re-execute.
> > > >
> > > > Easy.
> > > >
> > > > Simon
> > > >
> > > > http://eclipse-sat.blogspot.com/
> > > >
> > > >
> > > >
> > > > *Aggelos Mpimpoudis <[EMAIL PROTECTED]>*
> > > > Sent by: [EMAIL PROTECTED]
> > > >
> > > > 07/26/2007 02:30 PM
> > > > Please respond to
> > > > OSGi Developer Mail List <[email protected]>
> > > >
> > > >
> > > > > > > > To
> > > >                  OSGi Developer Mail List <[email protected]>
> > > > cc
> > > > > > > > Subject
> > > >                  [osgi-dev] Service Tracking Matter
> > > >
> > > >
> > > >
> > > > > > > >
> > > >
> > > >
> > > >
> > > >
> > > > Hello, OSGi community.
> > > >
> > > > Here is my question. I have an OSGi service, that I want to
> initialize
> > > > it's facilities only when 3 other services are added to the
> > framework. I
> > > > construct 3 service trackers (each one for every needed
> service). How
> > > > can I proceed after obtaining the knowledge that the 3 services are
> > > > ready? I am thinking of keeping a map maintained and at every
> add and
> > > > remove of service to check map's size and only if it is of size
> 3, to
> > > > proceed with the thread's execution. Is this practice very naive? Is
> > > > there something more obvious that I am missing?
> > > >
> > > > Thank you!
> > > >
> > > > My Best Regards,
> > > > Aggelos Mpimpoudis
> > > > --
> > > > Dept. of Informatics & Telecommunications, University of Athens
> > > > Athens, Greece
> > > > Gsm: +306942075153 / Skype: aggelos.mpimpoudis
> > > > email: a.mpimpoydhs [at] di.uoa.gr
> > > > _______________________________________________
> > > > OSGi Developer Mail List
> > > > [email protected]
> > > > http://www2.osgi.org/mailman/listinfo/osgi-dev
> > > >
> > >
> > >
> > > --
> > > Dept. of Informatics & Telecommunications, University of Athens
> > > Athens, Greece
> > > Gsm: +306942075153 / Skype: aggelos.mpimpoudis
> > > email: a.mpimpoydhs [at] di.uoa.gr
> > >
> >
> >
> > --
> > Dept. of Informatics & Telecommunications, University of Athens
> > Athens, Greece
> > Gsm: +306942075153 / Skype: aggelos.mpimpoudis
> > email: a.mpimpoydhs [at] di.uoa.gr
> > _______________________________________________
> > OSGi Developer Mail List
> > [email protected]
> > http://www2.osgi.org/mailman/listinfo/osgi-dev
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > OSGi Developer Mail List
> > [email protected]
> > http://www2.osgi.org/mailman/listinfo/osgi-dev
>
>
> --
> Dept. of Informatics & Telecommunications, University of Athens
> Athens, Greece
> Gsm: +306942075153 / Skype: aggelos.mpimpoudis
> email: a.mpimpoydhs [at] di.uoa.gr
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> http://www2.osgi.org/mailman/listinfo/osgi-dev
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> http://www2.osgi.org/mailman/listinfo/osgi-dev


--
Dept. of Informatics & Telecommunications, University of Athens
Athens, Greece
Gsm: +306942075153 / Skype: aggelos.mpimpoudis
email: a.mpimpoydhs [at] di.uoa.gr
_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

------------------------------------------------------------------------

_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev


--
Dept. of Informatics & Telecommunications, University of Athens
Athens, Greece
Gsm: +306942075153 / Skype: aggelos.mpimpoudis
email: a.mpimpoydhs [at] di.uoa.gr
_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

Reply via email to