2009-08-04 11 views
0

J'appelle un fichier exe appelé myapp.exe via un contrôleur Spring; Voici le code dans le contrôleur: Runtime.getRuntime(). exec ("D: \ vmd \ apps \ myapp.exe");Appel d'une application .Net Window à l'aide de Runtime.getRuntime(). Exec d'un contrôleur Spring exécuté sur Tomcat

myapp.exe est une application C# .NET. Si je clique directement sur myapp.exe en utilisant Windows Explorer, l'application s'ouvre et s'exécute; Toutefois, si j'appelle la commande via un contrôleur Spring dans Tomcat, l'application ne s'ouvre pas; mais, quand j'ouvre le Gestionnaire des tâches, je peux voir que le processus myapp.exe est en cours d'exécution. Néanmoins, la fenêtre pour myapp.exe ne s'ouvre pas. Dans JBoss, l'application est appelée avec succès via le contrôleur Spring. Est-ce que quelqu'un sait pourquoi l'application .NET ne s'ouvre pas via Tomcat?

Tomcat est installé en tant que service. Lorsque vous démarrez Tomcat manuellement en utilisant le fichier startup.bat, puis en appelant myapp.exe à partir d'un lien dans la webapp Tomcat, myapp.exe démarre correctement. Cependant, je ne suis pas sûr que Tomcat soit démarré ou non car un service empêche myapp.exe de s'exécuter correctement, car lorsque JBoss a été démarré en tant que service, myapp.exe s'est lancé avec succès.

+0

Tomcat s'exécute-t-il en tant que service Windows? Je ne pense pas que les services puissent lancer des applications sur le bureau. –

Répondre

1

Sous Windows, un processus exécuté en tant que service ne peut pas accéder au bureau de l'utilisateur normal. Et comme un programme démarré par un service hérite de cette propriété, il n'est généralement pas autorisé à accéder au bureau.

Comme vous le dites, que Tomcat fonctionne en tant que service, je pense que c'est la cause du problème. Je ne trouve pas de référence appropriée pour ça maintenant, désolé. Pourquoi ne pas faire en sorte que votre application .NET démarre automatiquement lors d'une session utilisateur?

Vous pouvez vous connecter au Tomcat via le socket, en attendant l'arrivée d'un signal de démarrage qui déclenchera le mappage de la fenêtre principale de l'application.

Questions connexes