У меня следующая проблема с настройкой кот 7 для запуска как службы в Windows.
В частности, tomcat является частью веб-приложения, установленного на серверах наших клиентов, и должен иметь все его зависимости внутри.
В этом случае tomcat зависит от Java JDK / JRE, поэтому я загрузил автономный jdk (версия 1.7u21) с его jre и поместил его в папку tomcat.
Итак, теперь мое дерево каталогов выглядит так:
tomcat7
- bin
- conf
- jdk
- jre
- logs
- temp
- webapps
- work
Затем я установил его как службу, используя команду
tomcat\bin\service.bat install
И он устанавливается без проблем, в jvm
Режим.
Обратите внимание, что я изменил файл service.bat, чтобы все необходимые переменные были правильно установлены, то есть CATALINA_HOME, CATALINA_BASE, JAVA_HOME и JRE_HOME, а последние две указывают на внутренний jdk / jre.
Однако, если я пытаюсь запустить службу, я получаю сообщение об ошибке, в котором говорится, что он не может запустить службу, и ссылается на код ошибки 1.
В журналах tomcat говорится:
[2013-05-22 12:22:09] [info] [ 5392] Commons Daemon procrun (1.0.15.0 32-bit) started
[2013-05-22 12:22:10] [info] [ 5392] Running 'AGEws2Tomcat7' Service...
[2013-05-22 12:22:10] [info] [ 2764] Starting service...
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] Failed creating java C:\AGEws\tomcat7\jdk\jre\bin\server\jvm.dll
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] ServiceStart returned 1
[2013-05-22 12:22:11] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:11] [info] [ 5392] Run service finished.
[2013-05-22 12:22:11] [info] [ 5392] Commons Daemon procrun finished
Я попробовал немного погуглить по этой части Failed creating java
и я узнал некоторую информацию о возможной зависимости от .dll
файл, который я нашел, но не понимаю, куда мне его поместить, если это действительно проблема.
Я также пробовал установить службу в java
режим, и он работает но использует собственную JVM моего компьютера вместо внутренней, а я необходимость это использовать внутренний.
Что я могу / должен сделать, чтобы Tomcat работал должным образом в качестве службы в jvm
режим, используя собственный jdk / jre?
Обратите внимание, что наше веб-приложение раньше поставлялось с tomcat 5, который отлично работал в jvm
Режим.
В конце концов я обнаружил, что решение заключалось в установке режима запуска и остановки на java
в то же время предоставляя явный JAVA_HOME с опцией
--JavaHome /path/to/internal/jdk
После внесения изменений сервис работает нормально, даже если в java
режим вместо jvm
режим, как раньше.
Чтобы прояснить ответ Маттео (и помочь ребятам из Windows, которые не слишком хорошо знакомы с миром Java), у нас была точно такая же проблема с использованием Tomcat 8 на 64-битной Windows Server 2012 (не R2). Мы использовали / настраивали справку IBM Rational DOORS Help 9.6.1 - хотя мы видели это с большинством продуктов IBM в стиле Java / Tomcat при попытке настроить на относительно современных 64-разрядных версиях Windows.
Нам пришлось обновить файл service.bat, расположенный в каталоге установки Tomcat, следующим образом:
--StartMode java ^
--StopMode java ^
--JavaHome "C:\Program Files (x86)\Java\jre7" ^
Параметры запуска / остановки были изменены с jvm, а параметр JavaHome - это новое дополнение к файлу конфигурации. Затем вы выполняете установку службы через:
service.bat install <service name>
В нашем случае имя службы было DOORS_Help. У нас была 64-разрядная установка Tomcat и 32-разрядная установка JRE, которые, очевидно, работали вместе - это то, что было предоставлено поставщиком.
Изменить: другой вариант, похоже, вручную устанавливает переменные среды JRE_HOME и JAVA_HOME перед установка Tomcat. В противном случае вам нужно будет переустановить службу Windows. Я знаю, что это противоречит исходному сообщению, но, похоже, не все установки Tomcat одинаковы!