Сервер управляемых сред выполнения с открытым исходным кодом (MRTE) для Java?

Я хочу, чтобы пользователи моего веб-сайта могли загружать свои Java-программы в виде набора файлов jar. Конечно, я хочу ограничить классы, которые они могут видеть или использовать, а также базовые машинные ресурсы, такие как куча, потоки, диск, потребляемый процессор и т. д. и т. д.

Я хочу, чтобы сервер управлял, хранил и запускал эти пользовательские программы, а также позволял им создавать учетные записи и настраивать среды выполнения. Допустим, я хочу позволить им выбрать одну из набора предопределенных сред: JRE 5, JRE 6, Groovy и т. д. А также позволить им настроить некоторые переменные.

Итак, вопрос в том, знаете ли вы что-то подобное тому, что я уже описал? это с открытым исходным кодом?

Разработка такой штуки может занять годы. Я знаю, что можно было бы что-то сделать, запустив разные процессы и настроив менеджеров безопасности. Но поскольку программы, которые я ожидаю разрешить, будут очень простыми, возможно, это не лучший подход (дорогой для хоста сервера). Кроме того, я предполагаю, что это усложняет потенциальное распределение исполнения.

Дополнительными функциями будут:

  • пользователям придется приобретать дополнительные ресурсы или функции.

  • распределение выполнения по кластеру хостов (не является первоначальным требованием, но было бы отличной дополнительной функцией).

Если вы все еще не понимаете, о чем я говорю, взгляните на Google App Engine. Они позволяют загружать приложения в управляемую и очень ограниченную среду выполнения.

С Уважением.


person Martín Schonaker    schedule 03.08.2010    source источник


Ответы (3)


Похоже на сервер приложений Java EE с некоторыми ограничениями (настраиваемый загрузчик классов), прикрепленными к развертыванию приложения. Может быть, GlassFish v3 можно использовать в качестве отправной точки?

person mjn    schedule 04.08.2010
comment
Да, вероятно, сервер приложений является хорошей отправной точкой для совместного использования ресурсов. Однако тот пользовательский загрузчик классов, который вы упомянули, является сложной частью, которую я хочу сохранить. Я думаю, нам пришлось бы инструментировать загруженный код, например, для ограничения кучи. Но, возможно, я упускаю какие-то детали об этом. Можете ли вы добавить ссылку, чтобы уточнить свой ответ по этому вопросу? Спасибо за Ваш ответ. - person Martín Schonaker; 05.08.2010

Я видел движки приложений, которые позволяют вам писать серверные приложения на Javascript на основе Rhino. Однако я не знаю ни одного движка приложения с открытым исходным кодом, работающего на Java или Groovy.

person Dragisa Krsmanovic    schedule 03.08.2010
comment
Что ж, хотя мы могли бы скомпилировать Javascript, компиляция меня не касается. Я беспокоюсь о том, чтобы контролировать RTE, чтобы пользователи не объявляли огромный массив или, например, не запускали бесконечный цикл. Я добавлю Rhino в набор предопределенных сред, о которых я говорил выше :). Спасибо за Ваш ответ. - person Martín Schonaker; 04.08.2010

Я думаю, что я попросил это в комплексе. Может быть, мне следует повторно попросить более простые концепции. Так или иначе. Самый точный ответ, который я хотел спросить, был у Мастина. Спасибо!

person Martín Schonaker    schedule 08.10.2010