首页 > 解决方案 > 使用适用于 WLS 的 WebLogic RESTful 管理界面处理具有归档版本的应用程序

问题描述

使用Oracle WebLogic Server 的 RESTful 编辑管理界面可以部署和取消部署应用程序。像这样:

curl -X POST "http://<server>/management/weblogic/latest/edit/appDeployments" \
--header 'Content-Type: multipart/form-data' \
--header 'X-Requested-By: bamboo-to-wls-script' \
--form "sourcePath=@myapplication.war" \
--form "model={\"name\": \"myapp\",
               \"archiveVersion\": \"v42\"}"

不知何故,它不像我预期的那样工作。上面的代码成功部署了一个应用程序“myapp”,但忽略了存档版本“v42”

它没有记录,但我可以将存档版本作为后缀附加到应用程序名称,如下所示:

{ "name": "myapp#v42",
  "archiveVersion": "v42" }

WebLogic 理解这种格式并将此 ID 拆分为名称和存档版本。但我无法取消部署这样的应用程序。以下代码不再起作用。

DELETE "http://<server>/management/weblogic/latest/edit/appDeployments/myapp

WebLogic 在这里也需要这种格式,如下所示:

DELETE "http://<server>/management/weblogic/latest/edit/appDeployments/myapp%23v42

在这种情况下,我需要知道部署在此服务器上的确切版本。否则我无法重新部署它。WebLogic 不够聪明,无法用新版本替换旧版本。

有没有比获取所有已部署的应用程序并手动解析这个巨大的 JSON 以查找我的应用程序更简单的方法来取消部署应用程序?

我正在使用 WebLogic 12.2.1.4


这是一个小脚本,如何使用 bash 脚本(jq必须安装)获取所有应用程序名称,包括按版本字母顺序排序的版本:

APPLIST=$(curl -X GET "<server>/management/weblogic/latest/edit/appDeployments" \
--header 'X-Requested-By: bamboo-to-wls-script' --silent | \
jq | jq -r .items[].name | sort | grep -E "^${app_name_without_version}#")

标签: restweblogic

解决方案


推荐阅读