Me gustaría implementar una función de complemento dinámico en una aplicación Java. Idealmente:Implementación de complementos dinámicos en Java
- La aplicación sería definir una interfaz
Plugin
con un método comogetCapabilities()
. - Un complemento sería un JAR
pluginX.jar
que contiene una clasePluginXImpl
implementandoPlugin
(y tal vez algunos otros). - El usuario pondría
pluginX.jar
en un directorio especial o establecería un parámetro de configuración apuntando a él. El usuario no debería necesariamente tener que incluirpluginX.jar
en su classpath. - La aplicación encontraría
PluginXImpl
(tal vez a través del manifiesto JAR, tal vez por reflexión) y agregarlo a un registro. - El cliente puede obtener una instancia de
PluginXImpl
, por ejemplo, invocando un método comogetPluginWithCapabilities("X")
. El usuario no necesariamente debe saber el nombre del complemento.
Tengo la sensación de que podría hacer esto con peaberry, pero no puedo entender la documentación. He invertido algo de tiempo en aprender sobre Guice, por lo que mi respuesta preferida no sería "use Spring Dynamic Modules".
¿Alguien puede darme una idea simple de cómo hacer esto usando Guice/peaberry, OSGi, o simplemente Java?
Peaberry y Spring DM son capas sobre OSGi. OSGi parece hacer lo que quiere (conceptualmente), pero lo hará de la manera 'OSGi-way' y no se asignará a su proceso exacto, por lo que una sugerencia es google para algunos tutoriales OSGi. – SteveD
OSGi parece cien veces más complicado que peaberry. ¿Algún enlace a buenos tutoriales? –