OSGi Servicios declarativos en Eclipse, múltiples interfaces de servicio y Seguridad para subprocesos

Stefan Winkler:

Me tropecé sobre un fenómeno en mi código, que se reduce a esto:

Tengo un servicio declarativa OSGi proporciona dos interfaces de servicios configurados de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="dispose" enabled="true" name="redacted.redactedstore">
   <implementation class="redacted.RedactedStore"/>
   <service>
      <provide interface="redacted.IRedactedStore"/>
      <provide interface="redacted.IRedactedStoreControl"/>
   </service>
</scr:component>

En mi código, tengo dos hilos diferentes, que tanto una apertura ServiceTrackerpara obtener la instancia de servicio, pero a través de diferentes interfaces:

tracker = new ServiceTracker<>(getBundle().getBundleContext(), <serviceClass>.class, null);
tracker.open();
tracker.waitForService(1000l);

Así que uno usa hilo IRedactedStorecomo clase de servicio y los otros usos IRedactedStoreControlcomo interfaz de servicio.

Así que lo que parece ocurrir es que cuando ambos hilos se ejecutan en paralelo en el momento adecuado, el equinoccio SCR creará una instancia no es uno (lo que cabe esperar), pero dos instancias de la clase de implementación de componentes.

¿Es correcto este comportamiento? O se trata de un error en la implementación de Equinox OSGi?

Si el comportamiento es correcto, puedo hacer algo en mi código para evitar que mediante la configuración del servicio de otra manera? (Por supuesto que podría reestructurar el servicio por lo que sólo proporciona una interfaz, o podría sincronizar los rastreadores de servicios ...)

Christian Schneider:

Para el componente no alcance prototipo que se puede esperar que se crea una sola vez. Ver especificaciones servicios declarativos .

Si este problema sólo ocurre cuando los seguidores de servicios se ejecutan en paralelo entonces sospecho que podría ser un problema de concurrencia en el equinoccio de SCR.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=229143&siteId=1
Recomendado
Clasificación