Я занимаюсь разработкой мультимедийного приложения, в котором пользователь должен иметь возможность динамически загружать инструменты из центральной базы данных во время выполнения.В основном это должны быть модули обработки сигналов для управления аудио и видео.Я читал о реализации пользовательского загрузчика классов, но, похоже, нужно знать имена классов, чтобы использовать classLoader.Это не кажется мне правильным.Я хочу иметь возможность создавать эти модули после развертывания приложения (и, возможно, открыть общедоступный API для их создания).
Я думал о том, чтобы потребовать от модулей расширения абстрактного класса, реализующего интерфейс:
public abstract class AbstractModule implements myInterface{
//....
}
У меня до сих пор нет никакого способа узнать, как авторы этих модулей назовут подкласс ...
Я прочитал немного о пакетах osgi, и этокажется многообещающим ... Однако я, очевидно, не хочу переделывать всю мою архитектуру ... возможно ли, чтобы эта часть моего приложения использовала пакеты Osgi?Мне кажется, что нет, так как кажется, что для комплектов Osgi требуется собственный контейнер.
В любом случае, это лучший, наименее хакерский и самый стабильный способ динамически загружать модули моего приложения.Модули нуждаются в некоторой стандартизации (например, расширение абстрактного класса).
Спасибо