У меня странная проблема с запуском программы .exe в моем WebApplication. Работает нормально в режиме консоли.
Код моего exe-приложения:
...
Console.WriteLine("before getEnvirement");
IDictionary environmentVariables = Environment.GetEnvironmentVariables();
foreach (DictionaryEntry de in environmentVariables)
{
Console.WriteLine(" {0} = {1}", de.Key, de.Value);
}
Console.WriteLine("before new Application");
this.application = new App();
Console.WriteLine("after new Application");
...
Где App () - это класс из библиотеки COM (я добавил ссылку, конечно).
Моя консоль Java / код веб-приложения:
try {
String[] callAndArgs = {"C:\\temp\\program.exe", "arg1", "arg2"};
Process p = Runtime.getRuntime().exec(callAndArgs);
p.waitFor();
} catch (IOException e) {
System.out.println("IOException Error: " + e.getMessage());
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
Вывод в «режиме консоли» (правильный):
before getEnvirement
<all my envirements>
before new Application
after new Application
Вывод в «режиме веб-приложения» (плохо):
before getEnvirement
Path = C:\Windows\system32; <...>
TEMP = C:\Windows\TEMP
или когда я удаляю код getEnvirement (тоже плохо):
before getEnvirement
before new Application
Exe-приложение не закрывается на tomcat (я должен использовать диспетчер задач, чтобы убить его)
И мои вопросы: почему это не работает правильно на tomcat? Почему у exe-программы возникают проблемы с получением системных требований, когда я запускаю ее на tomcat? И напоследок: почему он работает в режиме консоли? :)