Как создать сервис окон из приложения Java

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
215
задан 2 revs, 2 users 100% 28 March 2010 в 09:42
поделиться

10 ответов

У меня была некоторая удача с Сервисная Обертка Java

67
ответ дан sblundy 23 November 2019 в 04:21
поделиться

Я в настоящее время требую, чтобы это запустило основанное на Eclipse приложение, но я должен установить некоторые переменные сначала, который локален для того приложения. sc.exe только позволит исполняемые файлы, но не сценарии, таким образом, я обратился к autoexnt.exe, который является частью набор ресурса Windows 2003 . Это ограничивает сервис файлом единого пакета, но мне только нужен один сценарий пакетной обработки, который будет преобразован на службу.

чао!

1
ответ дан 23 November 2019 в 04:21
поделиться

Другой хороший вариант FireDaemon. Это используется некоторыми крупными магазинами как НАСА, IBM, и т.д.; посмотрите их веб-сайт о полном списке.

1
ответ дан Andrew Swan 23 November 2019 в 04:21
поделиться

Я всегда просто использую sc.exe (см. http://support.microsoft.com/kb/251192 ). Это должно быть установлено на XP от SP1, и если это не находится в Вашей разновидности Vista, можно загрузить, загружают его набором ресурса Vista.

я не сделал ничего также сложного с Java, но использующий ни одного, который полностью определенный параметр командной строки (x:\java.exe....) или создающий сценарий с Муравьем, чтобы включать depencies и установить параметры хорошо работает для меня.

2
ответ дан Kevin 23 November 2019 в 04:21
поделиться

Мне не нравилось лицензирование за Сервисную Обертку Java. Я пошел с ActiveState Perl для записи сервиса, который делает работу.

я думал о записи сервиса в C#, но мои ограничения времени были слишком трудны.

2
ответ дан Hugh Buchanan 23 November 2019 в 04:21
поделиться

Я использовал JavaService прежде с хорошим успехом. Это не было обновлено за несколько лет, но было симпатичным горным телом назад, когда я использовал его.

2
ответ дан 23 November 2019 в 04:21
поделиться

Я думаю Сервисная Обертка Java работы хорошо. Обратите внимание, что существует три пути для интегрирования приложения. Это кажется, что опция 1 будет работать лучше всего на Вас, учитывая, что Вы не хотите изменять код. Конфигурационный файл может стать немного сумасшедшим, но просто помнить, что (для опции 1) программа Вы запускаете и в пользу которого Вы будете определять аргументы, их программа помощника, которая тогда запустит Вашу программу. Они имеют конфигурационный файл в качестве примера для этого.

6
ответ дан Ed Thomas 23 November 2019 в 04:21
поделиться

One more option is WinRun4J. This is a configurable java launcher that doubles as a windows service host (both 32 and 64 bit versions). It is open source and there are no restrictions on its use.

(full disclosure: I work on this project).

26
ответ дан 23 November 2019 в 04:21
поделиться

JavaService - это LGPL. Это очень просто и стабильно. Настоятельно рекомендуется.

4
ответ дан 23 November 2019 в 04:21
поделиться

Apache Commons Daemon - хорошая альтернатива. Он имеет Procrun для служб windows и Jsvc для демонов unix. Он использует менее ограничительную лицензию Apache, и Apache Tomcat использует его как часть себя для работы под Windows и Linux! Заставить его работать немного сложно, но есть исчерпывающая статья с рабочим примером.

Кроме того, вы можете посмотреть на bin\service.bat в Apache Tomcat, чтобы получить представление о том, как настроить службу. В Tomcat они переименовывают двоичные файлы Procrun (prunsrv.exe -> tomcat6.exe, prunmgr.exe -> tomcat6w.exe).

Кое-что, с чем я столкнулся, используя Procrun, ваши методы запуска и остановки должны принимать параметры (String[] argv). Например, "start(String[] argv)" и "stop(String[] argv)" будут работать, но "start()" и "stop()" будут вызывать ошибки. Если вы не можете изменить эти вызовы, подумайте о создании класса-бутстраппера, который сможет изменить эти вызовы в соответствии с вашими потребностями.

98
ответ дан 23 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: