The only way that I could figure out - which maybe very well wrong - is to have define a :
modules.registerOperationHandler(ModelDescriptionConstants.ADD, ....)
on a class where one needs to have implemented the execute method. In that method the service can be found and invoke a method from it. The key is to be carefull about the classloader when executing that method (need to set the thread classloader to the class classloader).
At the same time the method shall be executing only id the service has been started .....
if (context.getType() == OperationContext.Type.SERVER) {
context.addStep(new OperationStepHandler() {
@Override
public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
String identifier = operation.get(ModelDescriptionConstants.OP_ADDR).asObject().get(CommonAttributes.MODULE).asString();
..... <YOUR CORE> ....
if (context.completeStep() == OperationContext.ResultAction.ROLLBACK) {
stateService.removeModule(identifier);
}
}
}, OperationContext.Stage.RUNTIME);