Архитектура запуска скриптов Groovy

Исходная информация: у меня есть отличное приложение (назовем его Runner), которое способно запускать все, что реализует определенный интерфейс (назовем его Runnable). . И у меня есть пул Runnables (отличные сценарии), которые должны быть видны этому приложению на этапе инициализации и какое приложение будет вызывать (через интерфейс и передачу объекта в качестве параметра).

Задача. Мне нужен способ загрузки и вызова всех Runnables из Runner.

Требования: это сложно, так как скрипты могут не следовать определенной структуре пакета и могут быть размещены на том же компьютере, что и Runner, но практически в любом месте. Они также могут быть названы по-разному (открытое обсуждение для обязательного именования, аналогичного java: имя класса == имя файла) и могут быть пропущены на данный момент (хотя, если будет совет по этому поводу, это круто!).

ПРИМЕЧАНИЯ: я полагаю, что это возможно, если иметь файл конфигурации, в котором настраиваются сценарии (указывается абсолютный путь), и загружать их с помощью этот материал и либо привести Object к интерфейсу Runnable и запустить то, что мне нужно, либо invokeMethod(...). Но понятия не имею, можно ли это сделать проще (должен быть способ, потому что он выглядит слишком неуклюжим). Я также не могу придумать способ решения проблемы с именами файлов и нескольких классов в одном файле.

P.S.: Такое длинное описание может вызвать недопонимание, поэтому прокомментируйте нечеткие части.


person Denys S.    schedule 05.04.2011    source источник


Ответы (2)


Я думаю, вам нужно знать все классы, реализующие интерфейс. Вас может заинтересовать Поиск классов Java, реализующих интерфейс.

person rahul    schedule 06.04.2011

Возможность иметь файл конфигурации, в котором записаны абсолютные пути скрипта, хороша и оказалась рабочим решением. Вам придется иметь дело с загрузкой классов всего, что не отображается в загрузчике классов приложения. В частности, вам придется иметь дело с проблемами сериализации POJO на основе аннотаций. Синглтон загрузчика Runnable — хорошая практика.

person Denys S.    schedule 13.04.2011