Folks,
If you are using OSGi services or JCache, you have to ensure that you don't
maintain references as instance attributes. This is because the objects
these references are pointing to can expire. For example, when a bundle
which is providing an OSGi service is restarted, there will be a new
instance of the OSGi service. Similarly, when caches or cache manager
become empty, to reclaim memory, those objects will be invalidated. So, if
you maintain references, they will go stale, and you will run into the
stale reference problem. https://wso2.org/jira/browse/CARBON-14179 is an
example where this has happened.

So, you should always use the proper methods & APIs to get hold of the
proper objects. In the case of OSGi, it is done using service trackers and
declarative services. In the case of JCache, you need to use the
javax.cache.Caching class to obtain the cache managers & caches.

-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>**
email: **[email protected]* <[email protected]>* cell: +94 77 3320919
blog: **http://blog.afkham.org* <http://blog.afkham.org>*
twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
*
linked-in: **http://lk.linkedin.com/in/afkhamazeez*
*
*
*Lean . Enterprise . Middleware*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to