Вопрос или проблема
Кто-нибудь знает, как заставить работать SOS Job Scheduler версии 1.13 с AdoptOpenJDK JDK 8 на Windows? Сам Job Scheduler, похоже, работает, но инструмент JOC не запускается, не может найти JVM.
Служба Windows для JOC зависает в состоянии “Запуск”, и в ее журнале появляется следующее:
[2019-12-08 12:14:36] [info] [ 2168] Commons Daemon procrun (1.0.15.0 64-bit) запущен
[2019-12-08 12:14:37] [info] [ 2168] Работа службы 'sos_joc'...
[2019-12-08 12:14:37] [error] [ 2916] Невозможно найти среду выполнения Java.
В настоящее время я использую SOS Job Scheduler 1.11 и смог запустить его, указав свойства vm
в config\factory.ini
и config\sos.ini
на bin\server\jvm.dll
внутри установки AdoptOpenJDK. Я установил те же параметры в конфигурации Job Scheduler 1.13. Но я не нахожу в конфигурационных файлах “Jetty” для JOC 1.13 возможности сделать подобную настройку.
Я добавил каталог JRE AdoptOpenJDK в системную переменную %PATH%
, как предложено в конфигурационных файлах SOS, но это не оказало очевидного эффекта. Я также установил системные переменные %JAVA_HOME%
и %JRE_HOME%
на путь к AdoptOpenJDK; тоже никакого эффекта. Я бы предпочел не делать это, так как это глобальные настройки, которые повлияют и на другие приложения, работающие на этом сервере.
Мы не используем Oracle JDK/JRE из-за новых условий лицензирования Oracle, при которых больше нет бесплатного использования в производстве.
Это на Windows Server 2016 Datacenter на Azure.
Это может быть немного поздно, но я заставил это работать. Ваши пути могут отличаться, поэтому я бы проверил их перед выполнением команд. Вот как.
Установите OpenJDK13U-jdk_x64_windows_openj9_13.0.2_8_openj9-0.18.0.msi из
https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jdk_x64_windows_openj9_13.0.2_8_openj9-0.18.0.msi
Убедитесь, что системная переменная окружения JAVA_HOME установлена на путь AdoptOpenJDK.
У меня это C:\Program Files\AdoptOpenJDK\jdk-13.0.2.8-openj9\bin, и это должна быть установка по умолчанию.
Также убедитесь, что системная переменная окружения PATH включает путь к AdoptOpenJDK.
- Установите jobscheduler_windows-x64.1.13.2.zip из
https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.13/JobScheduler.1.13.2/jobscheduler_windows-x64.1.13.2.zip/download - Установите jobscheduler_windows-x64_joe.1.13.2.zip из
https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.13/JobScheduler.1.13.2/jobscheduler_windows-x64_joe.1.13.2.zip/download - Установите joc_windows.1.13.2.zip из
https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.13/JobScheduler.1.13.2/joc_windows.1.13.2.zip/download
Откройте командную строку с правами администратора, выполните следующие команды-
"C:\Program Files\sos-berlin.com\joc\service\set_java_home_for_jetty_windows_service.cmd" "C:\Program Files\AdoptOpenJDK\jdk-13.0.2.8-openj9"
cd "C:\Program Files\sos-berlin.com\joc\jetty_base"
"C:\Program Files\AdoptOpenJDK\jdk-13.0.2.8-openj9\bin\java" -jar "C:\Program Files\sos-berlin.com\joc\jetty\start.jar" --create-startd --add-to-start=jsp
Вы все равно получите ошибку, похожую на эту:
Ошибка сканирования записи com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class из jar файла:///C:/Users/Username/.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar"
Это известная проблема с этой версией файла icu4j-2.6.1.jar. Вам нужно заменить его.
Скачайте файл icu4j-65_1.jar из
https://github.com/unicode-org/icu/releases/download/release-65-1/icu4j-65_1.jar.
Файл C:\ProgramData\sos-berlin.com\joc\jetty_base\webapps\joc.war необходимо обновить новым файлом icu4j.
Скопируйте joc.war в отдельную временную папку.
Запустите следующую команду в открытой командной строке:
cd C:\YourTempFolder
jar -xvf joc.war
Удалите файл icu4j-2.6.1.jar в папке WEB-INF\lib.
Скопируйте файл icu4j-65_1.jar в папку WEB-INF\lib.
Запустите следующую команду в открытой командной строке:
rm joc.war
jar -cvf joc.war *
rename "C:\ProgramData\sos-berlin.com\joc\jetty_base\webapps\joc.war" "C:\ProgramData\sos-berlin.com\joc\jetty_base\webapps\joc.war.old"
copy joc.war C:\ProgramData\sos-berlin.com\joc\jetty_base\webapps
Перезагрузите машину.
Откройте Диспетчер задач, выберите вкладку Службы и убедитесь, что служба sos_scheduler_YourMachinename_40444 работает.
Если нет, убедитесь, что служба sos_joc остановлена, а затем запустите службу sos_scheduler_YourMachinename_40444.
Когда она будет работать, запустите службу sos_joc.
Щелкните по ссылке на рабочем столе, чтобы открыть JOC.
Должно все заработать.
Обратите внимание на путь к вашей Java Runtime, например:
c:\Program Files\jdk8u422-b05-jre\
Убедитесь, что переменные JAVA_HOME и Path установлены в вашей системе.
- в Панели управления откройте “Система и безопасность”, а затем Переменные среды.
- Установите JAVA_HOME:
- В разделе Системные переменные нажмите Новая.
- имя переменной = JAVA_HOME.
- значение = путь установки JDK (без подпапки bin).
Установите PATH:
- Добавьте расположение папки bin установки JDK в переменную PATH в Системных переменных.
- Следующее является типичным значением для переменной PATH:
- C:\WINDOWS\system32;C:\WINDOWS;%JAVA_HOME%\bin
После установки JOC вам нужно запустить скрипт
set_java_home_for_jetty_windows_service.cmd
"c:\Program Files\sos-berlin.com\joc\service\set_java_home_for_jetty_windows_service.cmd" "c:\Program Files\jdk8u422-b05-jre\"
Затем проверьте значение, сохраненное в реестре, используя REGEDIT. Иногда оно может быть создано неправильно с завершающим символом двойной кавычки; “
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\sos_joc\Parameters\Java
JavaHome = c:\Program Files\jdk8u422-b05-jre\
Ответ или решение
Для решения проблемы интеграции SOS Job Scheduler версии 1.13 с AdoptOpenJDK на Windows Server 2016 Datacenter, необходимо выполнить несколько шагов. Ниже представлено детальное руководство, которое поможет вам успешно настроить систему.
1. Установка AdoptOpenJDK
Сначала убедитесь, что у вас установлена правильная версия AdoptOpenJDK. Рекомендуется использовать JDK 8, так как именно такая версия требуется для работы SOS Job Scheduler 1.13. Вы можете скачать OpenJDK с официального сайта или из репозитория GitHub.
2. Настройка переменных окружения
Создайте и задайте переменные окружения для Java. Это необходимо для того, чтобы система могла найти исполняемые файлы Java.
-
JAVA_HOME: Задайте значение
JAVA_HOME
на путь установки AdoptOpenJDK, например,C:\Program Files\AdoptOpenJDK\jdk-8
. -
PATH: Добавьте путь к
bin
директории вашего JDK в переменнуюPATH
. Это может выглядеть так:C:\WINDOWS\system32;C:\WINDOWS;%JAVA_HOME%\bin
3. Настройка SOS Job Scheduler
Анализ конфигурации
Для версии SOS Job Scheduler 1.13 на момент работы с AdoptOpenJDK важно настроить файлы конфигурации. Обычно вам нужно изменить следующие моменты:
-
Откройте файл
factory.ini
иsos.ini
, которые находятся в директорииconfig
. Направьте свойстваvm
на файлjvm.dll
, который находится в папкеbin\server
вашего JDK. -
В конфигурации JOC (Job Organizational Center) вам не нужно делать изменений в файлах Jetty, так как эти параметры определяются в служебных файлах и скриптах.
Установка служб
После установки и настройки Job Scheduler и JOC, вам необходимо установить необходимые службы. Если службы зависают в состоянии "Запуск", это может быть связано с неправильной настройкой Java.
- Откройте командную строку с правами администратора.
- Запустите следующий скрипт, который указывает путь к Java:
"C:\Program Files\sos-berlin.com\joc\service\set_java_home_for_jetty_windows_service.cmd" "C:\Program Files\AdoptOpenJDK\jdk-8"
4. Замена библиотеки ICU4J
Если вы столкнётесь с ошибками, связанными с библиотекой icu4j
, вам нужно будет заменить её:
- Скачайте новую версию библиотеки, такую как
icu4j-65_1.jar
. - Извлеките файл
joc.war
в временную папку:cd C:\ВашТемпФолдер jar -xvf joc.war
- Замените старый файл
icu4j-2.6.1.jar
в папкеWEB-INF\lib
и вставьте новыйicu4j-65_1.jar
. - Запакуйте
joc.war
обратно:jar -cvf joc.war *
5. Перезагрузка и проверка служб
После внесения всех изменений рекомендуется перезагрузить сервер, чтобы обновления вступили в силу. Проверьте, запущены ли нужные службы:
- Убедитесь, что служба
sos_scheduler_YourMachinename_40444
запущена. - Если служба
sos_joc
не запущена, сначала остановите её, а затем запустите службуsos_scheduler
.
6. Проверка работоспособности
В заключение, после успешного запуска всех служб, вы сможете открыть JOC по ссылке на рабочем столе. Теперь SOS Job Scheduler должен корректно работать с AdoptOpenJDK.
Этот процесс требует внимания к деталям, и каждый шаг важен для достижения успешной интеграции. Если возникнут дополнительные вопросы или сложности, рекомендуется обращаться в службу поддержки SOS или активные группы пользователей.