Je serveur web Jetty à partir de laquelle je veux courir hgweb.cgi:Exécuter hgweb.cgi de Java
ProcessBuilder builder = new ProcessBuilder("/MyPath/hgweb.cgi");
Puis-je créer Process process = builder.start();
et le courant d'alimentation d'entrée de la demande à la réponse du serveur formant processus. Mais il y a un problème: une sorte d'erreur de python Je ne peux pas comprendre
File "<stdin>", line 1, in <module>
File "mercurial/hgweb/wsgicgi.py", line 76, in launch
content = application(environ, start_response)
File "mercurial/hgweb/hgweb_mod.py", line 168, in __call__
return self.run_wsgi(req)
File "mercurial/hgweb/hgweb_mod.py", line 177, in run_wsgi
req.url = req.env['SCRIPT_NAME']
KeyError: 'SCRIPT_NAME
qui ne fonctionne pas de la ligne de commande non plus. J'ai essayé d'ajouter un en-tête (SCRIPT_NAME, "") pour former la requête pour hgweb.cgi mais continuer à voir ce message.
Dans chaque exemple d'utilisation de personnes utilisent hgweb apache/lighttpd/nginx serveurs pour exécuter hgweb.cgi et je ne peux pas comprendre pourquoi nodody fait ce que je veux faire.
Si quelqu'un pouvait me aider à la configuration hgweb.cgi ou m'a dit une bonne façon d'appeler Cgi script java je serais vraiment heureux!
J'ai déjà regardé la librairie Command Server et JavaHg et la seule raison pour laquelle je ne l'ai pas utilisée - c'est mort. Il y a aussi très peu d'exemples. Rien excepté les tests unitaires dans leur dépôt peut me montrer comment faire face à javahg. C'est pourquoi je regarde hgweb.cgi. Mais ta réponse m'a embrouillé! Je vais réfléchir une fois de plus à ces outils et prendre une décision finale. Mais tu m'as donné l'impression que mon travail n'était pas désespéré comme je le pensais. Je vais me reposer quelques jours et ensuite parler de ma décision. –
Malgré votre réponse, j'ai décidé d'invoquer mercurial comme un processus séparé. Cela semble correct mais je ne l'ai pas testé avec beaucoup d'utilisateurs. –
Bonne affaire, je suis content que vous l'ayez compris. Quelqu'un d'autre voudra probablement faire la même chose, donc c'est bien quand vous pouvez lier à la partie clé de votre solution. Si vous l'ajoutez en tant que 2ème réponse, je voterai pour cela. Rappelez-vous cependant, qu'appeler des exécutables est un moyen très simple de laisser couler l'injection du shell, alors assurez-vous de désinfecter ces entrées! –