Bueno, es muy tarde para dar sugerencias o soluciones, pero aún así me enfrentaba a un problema similar, más orientado a la investigación. Básicamente, estaba tratando de proporcionar una provisión y evaluaciones automáticas para tareas de programación para el curso de Java en plataformas de aprendizaje electrónico.
- una forma podría ser, Crear máquinas virtuales separadas (no JVM) pero máquinas virtuales reales con la configuración mínima posible de SO para cada estudiante.
- Instale JRE para Java o bibliotecas de acuerdo con sus lenguajes de programación, lo que desee que los estudiantes compilen y ejecuten en estas máquinas.
Sé que esto suena bastante complejo y con muchas tareas, pero Oracle Virtual Box ya proporciona la API de Java para crear o clonar máquinas virtuales de forma dinámica.
https://www.virtualbox.org/sdkref/index.html (Tenga en cuenta que incluso VMware también proporciona API para hacer lo mismo)
Y para el tamaño mínimo y la configuración de distribución de Linux, puede consultar este aquí http://www.slitaz.org/en/ ,
Así que ahora, si los estudiantes se equivocan o intentan hacerlo, puede ser con la memoria, el sistema de archivos o la red, el socket, como máximo, puede dañar su propia VM.
También internamente en estas VM, puede proporcionar seguridad adicional como Sandbox (administrador de seguridad) para Java o crear cuentas específicas de usuario en Linux y, por lo tanto, restringir el acceso.
Espero que esto ayude !!
Thread.stop
causará problemas en el código de la biblioteca de Java. De manera similar, el código de la biblioteca de Java requerirá permisos. Mucho mejor para permitir elSecurityManager
usojava.security.AccessController
. El cargador de clases probablemente también debería permitir el acceso a las propias clases del código de usuario.