[ 
https://issues.apache.org/jira/browse/DOSGI-171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13681323#comment-13681323
 ] 

Amichai Rothman commented on DOSGI-171:
---------------------------------------

Update: most of these usages have been fixed, but a few troublemakers still 
remain.
                
> service objects are never released (using ungetService)
> -------------------------------------------------------
>
>                 Key: DOSGI-171
>                 URL: https://issues.apache.org/jira/browse/DOSGI-171
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>    Affects Versions: 1.4.0, 1.5.0
>            Reporter: Amichai Rothman
>
> The BundleContext.getService() spec/API states that for every time this 
> method returns a service object, it must later be released using 
> BundleContext.ungetService(). Further, after ungetService is called, all 
> references to the service object should be removed (set to null) so that it 
> can be properly released.
> Currently, there are many usages of getService in the code, but none of them 
> release the reference as required.
> The recommendation seems to be to use service trackers where possible instead 
> of directly accessing the getService/ungetService APIs, since the 
> ServiceTracker was created for this exact purpose - to properly handle all 
> the bookkeeping for service references. Alternatively, in places in which a 
> ServiceTracker is not appropriate and the services are used locally, the 
> getService call should be followed by a try-finally block which always ungets 
> the service when done as is standard practice with resource management. 
> Finally, in places in which the service access is not contained in a local 
> method, and is stored in a field or passed around, proper resource release 
> should be performed (ungetService called and references nulled afterwards) in 
> an appropriate way for those cases (when closing or releasing the containing 
> class instance, etc.)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to