WildFly CLI запускает скрипт на встроенном сервере

#wildfly #jboss-cli

#wildfly #jboss-cli

Вопрос:

У меня есть несколько скриптов, которые я запускаю с помощью jboss-cli -c --controller=... --file=myscript.cli . Опции -c и --controller великолепны, потому что мой скрипт не знает, на каком сервере он должен быть запущен, и может быть повторно использован для нескольких серверов.

Теперь я хочу использовать функцию offline-cli, чтобы избежать конфликтов портов и предотвратить доступ к серверам через сеть во время их настройки. Теперь моя проблема в том, что для запуска встроенного сервера я должен использовать CLI-command embed-server , но я не хочу добавлять эту команду в свои скрипты, потому что скрипты не должны знать имя XML-файла конфигурации сервера.

К сожалению, я не могу использовать оба --command="embed-server --server-config=my-standalone.xml" и --file=myscript.cli одновременно, потому что CLI жалуется на:

 Only one of '--file', '--commands' or '--command' can appear as the argument at a time.
  

Еще одна вещь, которую я пробовал, была: --commands="embed-server --server-config=my-standalone.xml,run-batch --file="myscript.cli" но это тоже не работает, потому что мои скрипты содержат некоторую логику if-else, например:

 if (outcome == success) of /subsystem=iiop-openjdk:read-resource()
  /subsystem=iiop-openjdk:remove()
end-if
  

И, к сожалению, условная логика не поддерживается в пакетном режиме (см.https://bugzilla.redhat.com/show_bug.cgi?id=1083176 ).

Ответ №1:

простой способ — запустить встроенный сервер в вашем скрипте :

 embed-server --std-out=echo  --server-config=standalone-full.xml
/subsystem=messaging-activemq/server=default/jms-queue=inQueue:add(durable=true, entries=["/queue/inQueue","java:jboss/exported/queue/inQueue"])
/subsystem=messaging-activemq/server=default/jms-queue=outQueue:add(durable=true, entries=["/queue/outQueue","java:jboss/exported/queue/outQueue"])
quit
  

Не забудьте завершить работу в конце вашего скрипта cli 🙂

Комментарии:

1. Я процитирую себя: я не хочу добавлять эту команду в свои скрипты, потому что скрипты не должны знать имя XML-файла конфигурации сервера.

Ответ №2:

Если вы используете систему Unix, вы можете попробовать что-то вроде этого:

 (echo embed-server --std-out=echo  --server-config=my-standalone.xml; cat myscript.cli) | jboss-cli.sh 
  

Комментарии:

1. Это довольно обходной путь, к сожалению, я использую системы Linux и Windows, но аналогичный обходной путь, вероятно, возможен и в Windows (хотя я недостаточно разбираюсь в оболочке Windows, чтобы быть уверенным), поэтому я мог бы использовать это как запасной вариант.