Как асинхронно развернуть приложение с использованием REST в веб-журналах c 12 C? - PullRequest
0 голосов
/ 26 мая 2020

Я развертывал приложение weblogi c с использованием REST api со следующим фрагментом

    curl --insecure -X POST  --user ${userpass} -F\"deployment=@${appFileName}\" -F\"model={name: '${appName}',  deploymentOptions: { retireGracefully: 'false', timeout: '0' } , ${appType} ${appPlanVersion} targets: [ ${appTargets} ]}\" ${wlhost}/management/wls/latest/deployments/application "

Мне нужно подождать, пока этот завиток закончится, но иногда время ожидания запроса истекает из-за конфигурации сервера.

Итак, я подумал, что было бы лучше выполнить эту операцию асинхронно, я читал в документации, что могу использовать заголовок

    -X Prefer:respond-async

, но не понимаю, как его использовать, я не смог найти полезный пример, как только я добавил заголовок, запрос вернет URL-адрес задачи, например BODY:

    {
        "links": [{
            "rel": "job",
            "href": "http:\//localhost:7001/management/weblogic/latest/domainRuntime/deploymentManager/deploymentProgressObjects/fairShare"
        }],
        "operationType": 5,
        "state": "STATE_RUNNING",
        "applicationName": "fairShare",
        "progress": "processing",
        "completed": false
    }

как мне опросить этот URL-адрес задания, чтобы узнать, что приложение было развернут и активен?

Ответы [ 2 ]

0 голосов
/ 22 июля 2020

Ответ - использовать параметр запроса _detached = true в URL-адресе публикации. Это запустит развертывание асинхронно.

, например, обратитесь к этому документу.

https://docs.oracle.com/middleware/1213/wls/WLRMR/management_wls_version_deployments_application.htm#WLRMR290

0 голосов
/ 26 мая 2020

Если вы выполните:

curl --insecure -X GET --user $ {userpass} $ {wlhost} / management / tenant-monitoring / applications / $ {appName}

, когда приложение $ {appName} не развернуто, вы должны получить 404 Not Found.

при развертывании вы должны получить JSON, подобное этому:

{
"body": {
    "item": {
        "name": "${appName}",
        "type": "ear",
        "state": "STATE_ACTIVE",
        "health": "HEALTH_WARN",
        "targetStates": [
            {
                "target": "wls",
                "state": "STATE_ACTIVE"
            }
        ],
        "dataSources": [],
        "workManagers": [
            {
                "pendingRequests": 0,
                "completedRequests": 125,
                "name": "default",
                "server": "wls"
            }
        ],
        "minThreadsConstraints": [],
        "maxThreadsConstraints": [],
        "requestClasses": []
    }
},
"messages": []
}

Протестировано (в Postman) в WebLogi c 12.2.1.4

...