I want to enable the users of my website to upload their Java programs as a set
of jar files. Of course I want to restrict the classes they can see or use,
along with the underlying machine resources such as the heap, the threads, the disk, the
consumed processor, etc, etc.
I want a server to manage, store and run those user programs, and also to allow
them to create accounts and configure they runtime environments. Let’s say I
want to allow them to pick one of a set of predefined environments: JRE 5,
JRE 6, Groovy, etc. And also to let them configure some variables.
So, the question is do you know something similar to what I’ve described already
done? is it open source?
Developing such a thing could take years. I know that something could be done
starting different processes and configuring security managers. But since the
programs I expect to allow would be very simple, maybe this could not be the
best approach (expensive to the server host). Besides, I guess this complicates
potential execution distribution.
Additional features would be:
-
users would have to purchase additional resources
or features. -
execution distribution over a cluster of hosts (not an initial requirement, but would be
a great additional feature).
If you still don’t have a clue of what I’m talking about, take a look to Google
App Engine. They allow you to upload applications in a managed and very restrictive runtime environment.
Regards.
Sounds like a Java EE application server with some restrictions (custom classloader) attached to the app deployment. Maybe GlassFish v3 can be used as a starting point?