2016-09-01 2 views
1

Я новичок в Liberty, и я пытаюсь использовать функциональность Batch (352). Я не могу найти это так, как его спрашивали, либо через поисковые системы, либо с помощью stackoverflow, поэтому я, очевидно, не вижу ничего очевидного ...Как определить имя пакетного приложения в Liberty при вызове команды batchManager submit

Я создал простую тестовую заявку в Liberty 8.5.5.9. Он имеет следующую структуру:

  • testbatchEAR
    • testbatchWAR
      • testbatchBatch

ЕАР была добавлена ​​на сервер через обычный Add/Remove выбор меню.

Я сейчас пытаюсь передать задание из командной строки с помощью:

batchManager submit --batchManager=localhost:9443 --user=<> --password=<> --trustSslCertificates --jobXMLName=TestProcessor.xml --applicationName=testbatch 

И я вернусь сообщение (укороченный):

Error: Server returned HTTP response code: 500 for URL: https://localhost:9443/ibm/api/batch/jobinstances: [Error 500: com.ibm.ws.jbatch.rest.bridge.BatchContainerAppNotFoundException: Failed to load the application context for application testbatch#testbatch.war. Verify the application is installed. 

Я попытался testbatch, testbatchEAR , testbatchWAR, но из части сообщения testbatch # testbatch.war, похоже, что он просто использует одно и то же имя для EAR и WAR, что, по-моему, невозможно, не так ли?

Какую часть этого я не хватает? Он должен быть прямо перед моим лицом, но каждый пример или решение, которые я нахожу, используют голую ВОЙН, чего я не могу сделать. Есть ли где-нибудь в свободе, где я могу найти имя приложения? Должен ли я определять имена где-нибудь (server.xml?)?

Заранее благодарен!

* Изменить: Дополнительная информация *

Если я запустить его из Eclipse, Run Configurations> раздел Java EE Batch работы, это запустить его, и делает batchManager listJobs показывает имя приложения, как testbatchEAR # testbatchWAR .war.

Итак, я думаю, что у меня есть реальный вопрос: как я могу поместить это имя в параметр -applicationName для batchManager.bat? Он принимает и делает # .war из него. Я пытался поставить полное имя от listJobs, но это не позволит символ «#» ...

+0

Что делает элемент '' или '' в вашем server.xml? –

+0

@aguibert . Это нормально запускает приложение. Если я попытаюсь изменить имя, он не сможет найти ухо в этом месте. – Mike

+0

Я считаю, что вам нужно указать имя приложения EAR и имя компонента (с параметром --componentName) файла WAR. Из справки имя_компьютера «Идентифицирует компонент EJB в модуле EJB пакетного приложения». – DFollis

ответ

0

Укажите как --applicationName и --moduleName в приложении EAR

(Как вы обнаружили), в случае, когда пакетное приложение упаковано в WAR в рамках EAR, вам обычно необходимо указать как --applicationName, так и --moduleName, например:

batchManager submit --batchManager=localhost:9443 ... --applicationName=testbatch --moduleName=testbatchWAR.war ...

Укажите просто --applicationName в WAR приложения

Вы, возможно, видели примеры, хотя, в котором только --applicationName требуется, например, here.

Этот синтаксис работает в том случае, если пакетное приложение упаковано как WAR (но не WAR в EAR).

Название «полезный проект» здесь не имеет значения, и нет EJB, поэтому нет --componentName.

Док упоминает это here в разделе:

POST/IBM/API/партии/jobinstances

...

ApplicationName идентифицирует пакетное приложение. Это необходимо, если не указано имя модуля, и в этом случае имя приложения выводится из имени модуля, обрезая суффикс .war или .jar имени модуля. Например, если вы не укажете имя приложения и moduleName = SimpleBatchJob.war, то по умолчанию имя приложения будет равно SimpleBatchJob.

ModuleName идентифицирует модуль в пакетном приложении, который содержит артефакты работы, такие как JSL. Работа выполняется в контексте компонента модуля. Имя модуля требуется, если не указано имя приложения, в этом случае имя модуля выводится из имени приложения, добавляя .war к имени приложения. Например, если вы предоставите applicationName = SimpleBatchJob и no moduleName, то moduleName по умолчанию - SimpleBatchJob.war.

Но если вы создаете как веб-проект, так и проект EAR в таком инструменте, как WDT, вы не сможете легко дать проектам одинаковые имена (поскольку они будут сталкиваться), так что это действительно работает только в том случае, если нет отдельного проекта EAR. Когда проект EAR существует, вам нужны оба параметра.

Смежные вопросы