You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Alexander Klimetschek (JIRA)" <ji...@apache.org> on 2012/08/23 16:58:42 UTC
[jira] [Updated] (SLING-2575) Utility for tracking a
multi-cardinality OSGi service reference
[ https://issues.apache.org/jira/browse/SLING-2575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Klimetschek updated SLING-2575:
-----------------------------------------
Description:
Managing a SCR @Reference that's basically a list is very difficult when compared to the simple unary, static reference. It seems a typical use case is 0..n cardinality, dynamic policy and ordered by service ranking with the higher ranked ones first. This supports the use case to ask a list of services and have the first responding one win.
There is the ServiceTracker [0], but its getServiceReferences() method does not return the list sorted in any way, only gives your references and not the typed object(s) and it's a bit cumbersome to use.
A typical manual approach can be seen in the SlingPostServlet [1] in the register*() methods. Important is to handle thread-safeness.
[0] http://www.osgi.org/javadoc/r4v42/org/osgi/util/tracker/ServiceTracker.html
[1] http://svn.apache.org/repos/asf/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java
was:
Managing a SCR @Reference that's basically a list is very difficult when compared to the simple unary, static reference. It seems a typical use case is 0..n cardinality, dynamic policy and ordered by service ranking with the higher ranked ones first. This supports the use case to ask a list of services and have the first responding one win.
There is the [ServiceTracker|http://www.osgi.org/javadoc/r4v42/org/osgi/util/tracker/ServiceTracker.html], but its getServiceReferences() method does not return the list sorted in any way, only gives your references and not the typed object(s) and it's a bit cumbersome to use.
A typical manual approach can be seen in the [SlingPostServlet|http://svn.apache.org/repos/asf/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java] in the register*() methods. Important is to handle thread-safeness.
Summary: Utility for tracking a multi-cardinality OSGi service reference (was: Helper for tracking a multi-cardinality OSGi service reference)
> Utility for tracking a multi-cardinality OSGi service reference
> ---------------------------------------------------------------
>
> Key: SLING-2575
> URL: https://issues.apache.org/jira/browse/SLING-2575
> Project: Sling
> Issue Type: Improvement
> Components: Commons
> Reporter: Alexander Klimetschek
> Priority: Minor
>
> Managing a SCR @Reference that's basically a list is very difficult when compared to the simple unary, static reference. It seems a typical use case is 0..n cardinality, dynamic policy and ordered by service ranking with the higher ranked ones first. This supports the use case to ask a list of services and have the first responding one win.
> There is the ServiceTracker [0], but its getServiceReferences() method does not return the list sorted in any way, only gives your references and not the typed object(s) and it's a bit cumbersome to use.
> A typical manual approach can be seen in the SlingPostServlet [1] in the register*() methods. Important is to handle thread-safeness.
> [0] http://www.osgi.org/javadoc/r4v42/org/osgi/util/tracker/ServiceTracker.html
> [1] http://svn.apache.org/repos/asf/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira