Pregunta

¿Es posible crear complementos de Eclipse que se descubran automáticamente?

Estoy desarrollando un conjunto de complementos que necesitan operar en dos situaciones principales:

  • individualmente
  • en concierto unos con otros.

Cuando se ejecutan individualmente, los complementos deberían " simplemente funcionar " pero cuando estén en concierto, compartirán parte del mismo contenido del modelo, y uno de los complementos debe presentar al usuario una lista de otros complementos con los que compartir contenido. por ejemplo:

  

Foo Plugin detectó lo siguiente   plugins con los que puede compartir ontologías:

     

[] Complemento de barra

     

[] Baz plugin

     

[] No compartir

¿Eclipse ofrece algún método interno de publicación / detección que facilite este tipo de autodetección de otros complementos?

¿Fue útil?

Solución

La respuesta debe ser a través de Servicio Declarativo , que combina las ventajas de las extensiones xml de eclipse y los servicios POJO de osgi. Algo que es implícitamente dinámico como los servicios de Osgi, pero cargado "a pedido" como las extensiones de eclipse.

Introducido en 2006 para eclipse3.3, encontrará esos conceptos ilustrados en esta presentación .

  

Servicios declarativos ofrece la opción de definir referencias a otros servicios. También es posible especificar la cardinalidad de la referencia. La cardinalidad se especifica utilizando dos números, el primero, 0 o 1, indica la opcionalidad, el segundo, 1 o n, indica la multiplicidad.

En la práctica, esos DS (Servicios declarativos) no son fáciles de usar, ya que tiene que acceder al BundleContext, lo que significa hacer un seguimiento del BundleActivator, lo que no siempre es fácil ...

Si lo que necesita es definir algún tipo de modelo de componente orientado a servicios, esta presentación debería proporcionarle las diferentes alternativas existentes en la actualidad, además de detallar las " Servicios declarativos "


Para publicar lo que rcreswick ha encontrado en relación con DS:

Otros consejos

Bueno, el Registro de servicios OSGI puede compartir los servicios basados ??en pojo en tiempo de ejecución, no los propios complementos. Hay varias opciones para facilitar esto, como codificar directamente a OSGI API, Declarative Services, Spring DM y iPojo (estoy seguro de que también hay otras).

Es posible que desee revisar el patrón de la pizarra como un medio para lograr una solución de estilo observador / observable dinámico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top