Chiamare un'applicazione basata su .Net Window utilizzando Runtime.getRuntime (). Exec da un Spring Controller in esecuzione su Tomcat

StackOverflow https://stackoverflow.com/questions/1228143

Domanda

Sto chiamando un file exe chiamato myapp.exe tramite un controller Spring; ecco il codice nel controller: Runtime.getRuntime () exec (" D: \ VMD \ apps \ myapp.exe ");.

myapp.exe è un'applicazione C # .NET. Se clicco direttamente su myapp.exe utilizzando Esplora risorse, l'applicazione si apre ed esegue; tuttavia, se chiamo il comando tramite un controller Spring all'interno di Tomcat, l'applicazione non si apre; ma, quando apro Task Manager, vedo che il processo myapp.exe è in esecuzione. Tuttavia, la finestra per myapp.exe non si apre. In JBoss, l'applicazione viene invocata correttamente tramite Spring Controller. Qualcuno sa perché l'applicazione .NET non si apre tramite Tomcat?

Tomcat è installato come servizio. Quando si avvia Tomcat manualmente utilizzando il file startup.bat e quindi si richiama myapp.exe da un collegamento all'interno della webapp Tomcat, myapp.exe si avvia correttamente. Tuttavia, non sono sicuro che Tomcat sia avviato o meno come servizio impedisce a myapp.exe di funzionare correttamente, poiché quando JBoss è stato avviato come servizio, myapp.exe è stato avviato correttamente.

È stato utile?

Soluzione

In Windows, un processo in esecuzione come servizio non può accedere al normale desktop dell'utente. E poiché un programma avviato da un servizio eredita questa proprietà, di solito non è consentito nemmeno accedere al desktop.

Come dici tu, che Tomcat è in esecuzione come servizio, penso che questa sia la causa del problema. Impossibile trovare un riferimento adatto per questo in questo momento, scusa.

Perché non avviare automaticamente l'applicazione .NET in una sessione utente? È possibile connettersi a Tomcat tramite socket, in attesa dell'arrivo di un segnale di avvio, che innescherebbe la mappatura della finestra principale dell'applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top