Немного предыстории:
У меня есть четыре приложения, которые работают как службы на множестве компьютеров с Windows XP, два из которых являются приложениями Java. Все четыре приложения изначально были разработаны для запуска с сервера Linux, и к нему подключены три машины с Windows XP, но требования клиентов подразумевали перенос этих приложений на Windows, чтобы все можно было запускать с одной машины.
Эта проблема:
Так как мы не хотели кардинально изменять что-либо в нашем коде, чтобы запускать приложения как сервисы, мы использовали instsrv.exe
и srvany.exe
для установки и запуска приложений. Это прекрасно работает для двух приложений C ++, и по большей части, Java-приложения работают нормально. Однако, когда пользователь выходит из системы, Java-приложения останавливаются. Фактические службы все еще работают, потому что java.exe
(или javaw.exe
, неважно, какой) все еще работает, но приложение больше не работает. Что касается диспетчера служб, все работает нормально, и поэтому он не перезапускает службу, как следует. Обратите внимание, что основной пользователь использует ограниченную учетную запись и поэтому не может перезапустить службы вручную.
Материал, который мы рассмотрели / попробовали:
srvany.exe.
был выбран в первую очередь потому, что он бесплатный (как в пиве) и относительно прост в настройке. Мы также рассмотрели srvstart.exe
, но я считаю, что он показал ту же проблему. Мы рассмотрели две выделенные оболочки Java-сервиса, но они были исключены из рассмотрения из-за условий лицензирования и / или сложности их настройки. Обратите внимание, что YAJSW изначально не рассматривался и, если позволяет время, может быть проверен.
Похоже, что проблема не существует в Windows 7, но поскольку наш клиент требует Windows XP, это не вариант.
Я также пытался разрешить взаимодействие с двумя приложениями java на рабочем столе, но это не решает проблему при использовании javaw.exe
и отображает окно командной строки при использовании java.exe
, что крайне нежелательно, даже если оно решает проблему эта проблема. До сих пор нашей временной мерой было просить клиента не выходить из учетной записи, а использовать только сменного пользователя.
Что-то еще мне не хватает или стоит попробовать? Это также зависит от времени, так как, когда эти устройства выходят за дверь, может быть чрезвычайно трудно осуществить исправление на месте.