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

Reply via email to