Службы Java перестают работать, когда пользователь выходит из системы

Некоторые предпосылки:

У меня есть четыре приложения, которые запускаются как службы на компьютере под управлением Windows XP, два из которых – Java-приложения. Все четыре приложения первоначально предназначались для запуска с сервера Linux, и к ним подключались три компьютера под управлением Windows XP, но требования клиентов означали перенос этих приложений на Windows, чтобы все можно было запускать с одной машины.

Проблема:

Поскольку мы не хотели радикально изменить что-либо в нашем коде, чтобы запускать приложения в качестве сервисов, мы использовали instsrv.exe и srvany.exe для установки и запуска приложений. Это отлично подходит для двух приложений c ++, и по большей части приложения Java работают нормально. Однако, когда пользователь выходит из системы, приложения Java останавливаются. Фактические службы все еще запущены, потому что java.exe (или javaw.exe , не имеет значения, который) все еще работает, но он больше не запускает приложение. Что касается менеджера служб, все работает нормально, и поэтому он не перезапускает службу, как должен. Обратите внимание, что основной пользователь использует ограниченную учетную запись и, следовательно, не может перезапустить службы вручную.

Материал, который мы рассмотрели / попробовали:

srvany.exe. Был выбран в первую очередь потому, что он бесплатный (как в пиве) для использования и относительно легко настраивается. Мы также рассмотрели srvstart.exe , но я считаю, что это srvstart.exe ту же проблему. Есть две посвященные оболочки Java-сервиса, которые мы изучали, но были исключены из рассмотрения из-за условий лицензирования и / или сложности их настройки. Обратите внимание, что YAJSW не рассматривался первоначально и, если позволяет время, может быть протестирован.

Проблема, похоже, не существует в Windows 7, но поскольку нашему клиенту требуется Windows XP, это не вариант.

Я также попытался разрешить взаимодействие с рабочим столом для двух java-приложений, но это не решает проблему при использовании javaw.exe и показывает окно командной строки при использовании java.exe , что крайне нежелательно, даже если оно действительно разрешает проблема. До сих пор наша мера пресечения заключалась в том, чтобы сообщить клиенту не выходить из учетной записи, а использовать только пользователя коммутатора.

Есть ли что-то еще, что мне не хватает или нужно попробовать? Это также чувствительно к времени, поскольку, как только эти устройства выходят за дверь, может быть очень сложно реализовать исправление на месте.

One Solution collect form web for “Службы Java перестают работать, когда пользователь выходит из системы”

Вам нужно добавить флаг -Xrs в вашу командную строку java.exe, чтобы исключить JVM при выходе из машины XP. Проблема не возникает в Windows 7 (или Vista / Server 2008), поскольку «Изоляция сеанса 0» запрещает пользователям входить в систему (и, таким образом, отключается) Session 0, место, где выполняются службы.

Однако будьте осторожны – если ваше приложение java ловит события выключения, они могут не срабатывать, как ожидалось, когда вы используете флаг -Xrs. Это проблема для вас?

  • Сделать WinXP считают, что есть второй монитор? (ATI Radeon Mobility 9000)
  • Установлен Xubuntu 10.10, и теперь я не могу запустить WIndows XP
  • Учетная запись администратора повреждена?
  • Как включить AHCI в Windows XP без переустановки
  • Как получить доступ к системному лотку с помощью клавиатуры?
  • Кнопка мыши и счетчик клавиш для Windows
  • Как сбросить пароль администратора Windows XP?
  • Windows XP требует установки BIOS IDE для загрузки, как это исправить?
  • Добавьте элемент в меню «отправить» всем пользователям (winxp)
  • Восстановление файлов из удаленного раздела
  • Почему приложение висит
  • Как создать загрузочный USB-накопитель с несколькими операционными системами?
  • Давайте будем гением компьютера.