2009-11-18 5 views
1

Je veux créer un site Web où les gens peuvent résoudre des tâches de programmation et éventuellement télécharger leur solution (dans n'importe quelle langue JVM) afin de la vérifier et de la partager avec d'autres.Comment limiter les ressources du programme + les droits dans JVM/OSGi?

J'ai figuré OSGi (l'apprendre maintenant) pourrait être un bon outil pour gérer cette tâche (est-ce?). Mais évidemment, je suis un peu anxieux de laisser d'autres personnes exécuter leur code sur mon hôte (btw, une solution basée sur les entrées/sorties n'est pas une alternative).

Je pensais que je dois savoir

a) comment autoriser/restreindre certaines fonctionnalités Java (par exemple à partir d'un fil, l'envoi d'un courrier, écrire un fichier, etc.)

et

b) comment limiter les ressources CPU/RAM d'un programme/bundle afin que personne ne puisse réduire l'hôte avec une boucle sans fin par exemple.

Des suggestions?

Répondre

2

b) Je pense que la solution la plus sûre serait de créer des JVM dédiées pour chaque solution soumise par l'utilisateur. De cette façon, vous avez tous les outils de votre système d'exploitation à portée de main.

a) La fonctionnalité Java peut être restreinte en utilisant Permissions. Je n'ai jamais essayé de faire quelque chose de sophistiqué avec ça, mais ce n'est certainement pas trivial de faire une politique solide pour l'entrée de tiers. Peut-être que Google Appengine SDK pourrait aider. Je soupçonne qu'il utilise des permissions pour imiter le comportement d'Appengine localement.

+0

merci pour la réponse - m'a donné quelques conseils pour faire d'autres recherches – stephanos