Java: есть ли структура, которая позволяет динамически загружать и выгружать банки (но не OSGI)?

Я хочу механизм, который позволит динамически загружать и выгружать банки, а также вызывать класс активатора в банке. Я не хочу использовать OSGi из-за громоздкого механизма импорта / экспорта.

3 ответа

Решение

Есть проект под названием Java Plugin Framework, который может быть тем, что вы ищете. На их веб-странице говорится, что проект является попыткой согласовать и расширить архитектуру плагинов Eclipse до OSGI. Это универсальная структура и не привязана к приложениям SWT/ Desktop.

Вы можете использовать ClassLoader для динамической загрузки классов из файлов JAR. Когда вы динамически загрузили класс, вы можете явно вызвать подпрограмму инициализации, если это необходимо. Как и остальная часть Java, этот механизм является сборщиком мусора, поэтому нет способа явно выгружать JAR; JVM должен освободить JAR, когда на динамически загруженные классы больше нет ссылок и запущена сборка мусора.

JavaRebel, но он в основном подходит для разработки, а не для производственного развертывания. Если вы ищете альтернативу с открытым исходным кодом, вы можете следить за этим вопросом.

Другие вопросы по тегам