#sandbox #java #plugin
Доброго времени суток! Вопрос общего плана, так как пока пытаюсь собрать в кучу мысли и определится с инструментарием. Есть (будет:)) ядро приложения, которое взаимодействует с файловой системой, базой данных, сетью. Для увеличения его функционала планируется использование "модулей расширения". Основная задача модулей - получить от ядра данные, каким-то образом их обработать, вернуть результат. Само собой, очень хочется, чтоб модули имели как можно меньше возможностей шариться там, где им явно не разрешили... Если бы речь не шла о кросс-платформе, я бы наверно удовлетворился *nix-chroot'ом - каждой хрени по изолированной середе (+,возможно, по отдельному пользователю) и в своих рамках хай творят, что хотят. Вариант разработки своей интерпретируемой среды с кучей предметных объектов и языком.. наверно, в теории, тоже может рассматриваться, но уже попахивает извращениями в стиле 1С)) Вопрос - можно ли каким-либо образом запускать java-классы в среде... ну примерно так, как это делает браузер для апплетов? Или может как-то можно уменьшить набор системных классов для модуля (естественно предоставив аналогичные, но фильтруемые)... Буду рад услышать идеи, соображения, ссылки на литературу... Спасибо!
Ответы
Ответ 1
Ну можно конечно извратиться и запустить 2 копии JVM, в одной JVM крутится ваше ядро, а во второй ваши плагины. Взаимодействие между ядром и плагинами организовать через RMIОтвет 2
Похоже, вам пригодится кастомный ClassLoader, чтобы устанавить нужный ProtectionDomain. Ссылки: [1], [2].
Комментариев нет:
Отправить комментарий