How about an approach like this? https://github.com/tellison/incubator-pirk/tree/pirk-63
The "on-ramp" is the driver [1], which calls upon the service to find a plug-in [2] that claims to implement the required platform responder, e.g. [3]. The list of plug-ins is given in the provider's JAR file, so the ones we provide in Pirk are listed together [4], but if you split these into modules, or somebody brings their own JAR alongside, these would be listed in each JAR's services/ directory. [1] https://github.com/tellison/incubator-pirk/blob/pirk-63/src/main/java/org/apache/pirk/responder/wideskies/ResponderDriver.java [2] https://github.com/tellison/incubator-pirk/blob/pirk-63/src/main/java/org/apache/pirk/responder/spi/ResponderPlugin.java [3] https://github.com/tellison/incubator-pirk/blob/pirk-63/src/main/java/org/apache/pirk/responder/wideskies/storm/StormResponder.java [4] https://github.com/tellison/incubator-pirk/blob/pirk-63/src/main/services/org.apache.responder.spi.Responder I'm not even going to dignify this with a WIP PR, it is far from ready, so proceed with caution. There is hopefully enough there to show the approach, and if it is worth continuing I'm happy to do so. Regards, Tim
