Weblogic WLST遍历JDBC数据源列表时cd命令仅首个生效报错如何解决
WLST批量查询JDBC数据源最大容量修复方案
错误原因
- 路径拼接错误:原脚本重复定义了两层
JDBCResource/{数据源名},不符合Weblogic MBean的结构规范,导致第二次路径切换时找不到对应MBean - 变量名不匹配:获取最大容量后赋值给
max_value,打印时错误调用了未定义的max_cap变量 - 循环逻辑冗余:叠加while和for两层遍历逻辑,执行流程混乱
- 缺少依赖导入:使用
os.path.join但未提前导入os模块,且WLST的MBean路径固定使用/作为分隔符,不需要调用操作系统路径拼接函数
修复后代码
# 导入必要模块 import os # 连接Weblogic控制台 connect('user', 'password', url='t3://host:1234') # 切换到域配置根路径 domainConfig() # 获取所有JDBC数据源对象 cd("JDBCSystemResources") dataSources = cmo.getJDBCSystemResources() if len(dataSources) > 0: for ds in dataSources: dsName = ds.getName() # 拼接正确的MBean路径,指向连接池参数节点 cd(f"/JDBCSystemResources/{dsName}/JDBCResource/{dsName}/JDBCConnectionPoolParams") maxCapacity = cmo.getMaxCapacity() print(f"{dsName}={maxCapacity}") # 切回根路径避免下次路径切换错误 cd("/")
如果你使用的WLST版本不支持f-string,可以替换为字符串拼接写法:
cd("/JDBCSystemResources/" + dsName + "/JDBCResource/" + dsName + "/JDBCConnectionPoolParams") print(dsName + "=" + str(maxCapacity))
注意事项
- 执行前替换
user、password、t3://host:1234为你的Weblogic实际连接信息 - 脚本可以直接在WLST交互环境执行,也可以保存为py文件用
wlst.sh 文件名.py调用
内容的提问来源于stack exchange,提问作者vikram sinha
相关产品推荐
相关产品推荐

