On Wednesday 25 February 2015 10:50:36 Antonio Sanso wrote:
> hi *
> 
> On Feb 24, 2015, at 6:00 PM, Oliver Lietz
> <[email protected]<mailto:[email protected]>> wrote:
> 
> On Friday 20 February 2015 17:53:02 Marius Petria wrote:
> Hi,
> 
> hi Marius,
> 
> I discovered an issue related to service users. Due to the indeterminism
> of OSGI a consumer of ServiceUserMapper cannot be sure that
> getServiceUserID will find a registered mapping even if that mapping has
> been configured. For example if a component starts roughly at the same
> time as the mapping is installed it can happen that the calls the
> component makes to loginService to fail. More concretely that can happen
> for example if one needs a session in an activate method to register jcr
> event listener, or to read some configuration properties from the
> repository.
> 
> In order to make this behavior more predictable I created an issue [1]
> proposing to always register an osgi service (I called it
> ServiceUserMapping) right after a mapping is installed, such that consumer
> components can reference it and wait for the mapping to be available. I
> also worked out an implementation in [2].
> 
> First, I would like to ask you if you think the problem is valid and if
> the approach is correct?
> Second, it will be really helpful if you can also comment on the issue
> around the provided implementation.
> 
> I hadn't the time to look into the implementation but I have this use case
> right now. A service user mapping and a bundle with a service which relies
> on this mapping are deployed in a (AEM) package - service fails because of
> mapping not yet available when service gets activated. A ServiceUserMapping
> service as reference would solve this problem. So +1 for this approach and
> the name ServiceUserMapping.
> 
> a valid alternative that will end up to a NOOP for SLING-4312 is to use
> Sling initial content in the same bundle rather than a package.

hi Antonio,

we have a dedicated bundle (with Sling-Initial-Content) for configurations and 
IMHO service user mappings (as well as other global configurations) should be 
kept at a single place and not spread around in different application bundles.

Regards,
O.

> e.g. in your pom
> 
>     <instructions>
>         <Sling-Initial-Content>
>             SLING-INF/content;path:=/libs/system/config;overwrite:=true;
>         </Sling-Initial-Content>
>     </instructions>
> 
> I did use this approach and works (for the record it works also in AEM)
> 
> regards
> 
> antonio
> 
> 
> 
> Regards,
> O.
> 
> Marius
> 
> [1] https://issues.apache.org/jira/browse/SLING-4312
> [2] https://github.com/mpetria/sling/compare/mpetria:trunk...dev-SLING-4312

Reply via email to