[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] my confusion for unregistering services in bundle.stop

It is more clear to clean up your service registrations and service listeners in your BundleActivator.stop method. In many cases you want to unregister your listeners and services before you do other clean-up that will invalidate the services/listeners and cause them to behave incorrectly. For example, closing a database connection that backs a service implementation. You should unregister the service before closing the database connection.

The extra cleanup the Framework does is really a safeguard to prevent invalid services and listeners from collecting in the Framework.

Tom



Inactive hide details for Meng Xin Zhu ---03/31/2008 05:17:51 AM---I find below description in the OSGi R4 specification sectioMeng Xin Zhu ---03/31/2008 05:17:51 AM---I find below description in the OSGi R4 specification section '4.3.6 Activation':


From:

Meng Xin Zhu <zhumx@xxxxxxxxxx>

To:

equinox-dev@xxxxxxxxxxx

Cc:

Xiang Yu Hao <haoxy@xxxxxxxxxx>

Date:

03/31/2008 05:17 AM

Subject:

[equinox-dev] my confusion for unregistering services in bundle.stop




I find below description in the OSGi R4 specification section '4.3.6 Activation':

stop(BundleContext) â This method must undo all the actions of the BundleActivator.start(BundleContext) method.
However, it is unnecessary to unregister services or Framework listeners, because they must be cleaned up by the Framework anyway.

Recently I read a post introducing
development best practices(it's ibm internal site), it says:
  • While the OSGi Framework will clean up services and service references, it is still good programming practice to clean up what you allocate.
  • If you register services in the start() method, unregister the services in the stop() method.
  • If you create (and open) a ServiceTracker in the start() method, close it in the stop() method.
  • If you start threads or jobs in your start() method, make sure that the threads or jobs are terminated by your stop method.

    Which practice I would choice when programming OSGi service under Equinox? Thanks

    Best Regards
    Zhu Meng Xin
    IBM Workplace Client Technology
    Tel: 86-10-82452244-52342 Fax: 86-10-82452887
    NOTES: Meng Xin Zhu/China/IBM E-mail: zhumx@xxxxxxxxxx
    _______________________________________________
    equinox-dev mailing list
    equinox-dev@xxxxxxxxxxx
    https://dev.eclipse.org/mailman/listinfo/equinox-dev

    GIF image

    GIF image