rest - 使用适用于 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}#")
解决方案
推荐阅读
- keyboard - 什么物理键映射到键码 108 (VK_SEPARATOR)?
- django - 为什么 SQL 插入 (mariadb) 会随着表的增长而变慢
- flutter - Dart SDK 版本差异
- regex - 正则表达式删除句点,除非在数字之间
- javascript - 如何使用 javascript 将 HTML Treeview 下载为 PDF
- laravel - Laravel echo 只收听公共频道
- mysql - MySQL 从行值生成列
- java - 如何在 Spring Boot 嵌入式 tomcat 中自定义 ssl 配置?
- c# - 用于包含字母数字和特殊字符但不包含特殊字符的正则表达式
- mysql - MySQL查询计算两个坐标之间的距离,但HAVING子句太慢