我想创建一个人们可以解决编程任务并最终上传他们的解决方案(使用任何JVM语言)的网站,以便对其进行验证并与他人共享。
我认为 OSGi (现在学习它)可能是处理这项任务的好工具(是吗?)。但显然我有点担心让其他人在我的主机上执行他们的代码(顺便说一下,基于输入/输出的解决方案是别的选择)。
所以我想我需要找出
a)如何允许/限制某些Java功能(例如,启动线程,发送邮件,编写文件等)。
和
b)如何限制程序/ bundle的CPU / RAM资源所以没有人可以通过无限循环使主机失效。
有什么建议吗?
答案 0 :(得分:2)
b)我认为最安全的解决方案是为每个用户提交的解决方案创建专用的JVM。这样,您就拥有了所有操作系统的工具。
a)可以使用Permissions限制Java功能。我从来没有试过用它做一些复杂的事情,但为第三方输入制定一个可靠的政策肯定是微不足道的。也许谷歌的Appengine SDK可能有所帮助。我怀疑它正在使用权限来模仿Appengine在本地的行为。