You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用wsadmin(Jython)停止特定节点上的Web服务器?

使用wsadmin停止特定节点上的Web服务器及查询语句问题解决

为什么你的AdminControl.queryNames返回空值?

  • AdminControl操作的是运行时MBean对象,如果目标Web服务器未启动,或者对应节点的节点代理(Node Agent)未运行,就查不到对应的运行时实例,自然返回空值。
  • 另一个常见原因是查询条件不够精确,比如节点名称拼写错误,或者缺少Web服务器名称、Cell名称等关键匹配条件。

正确的查询与停止步骤

步骤1:确认目标Web服务器的配置信息

先通过AdminConfig获取所有Web服务器的配置详情,明确节点名称和Web服务器名称的准确值:

# 列出所有Web服务器配置
webServers = AdminConfig.list('WebServer').splitlines()
# 遍历输出每个Web服务器的核心信息
for ws in webServers:
    ws_name = AdminConfig.showAttribute(ws, 'name')
    ws_node = AdminConfig.showAttribute(ws, 'nodeName')
    print(f"Web服务器名称: {ws_name}, 所属节点: {ws_node}")

步骤2:精确查询运行时Web服务器对象

如果要通过AdminControl查询,需确保节点代理和Web服务器处于运行状态,再使用精确的查询条件:

# 替换为你的目标节点名称和Web服务器名称
target_node = 'mynode'
target_ws_name = 'yourWebServerName'

# 构建精确查询语句
webserver_runtime = AdminControl.queryNames(f'type=WebServer,node={target_node},name={target_ws_name},*')

if webserver_runtime:
    # 发送停止指令
    AdminControl.invoke(webserver_runtime, 'stop')
    print(f"已向Web服务器 {target_ws_name} 发送停止指令")
else:
    print("未找到运行时Web服务器实例,请检查以下内容:")
    print("- 目标节点的节点代理(Node Agent)是否已启动")
    print("- 目标Web服务器本身是否处于运行状态")
    print("- 节点名称和Web服务器名称是否拼写正确")

步骤3:无需运行时查询的停止方法(推荐)

如果不确定Web服务器运行状态,或者不想依赖运行时MBean,可以直接通过配置信息调用AdminTask停止:

target_node = 'mynode'
target_ws = None

# 遍历找到目标节点上的Web服务器配置
for ws in AdminConfig.list('WebServer').splitlines():
    if AdminConfig.showAttribute(ws, 'nodeName') == target_node:
        target_ws = ws
        break

if target_ws:
    ws_name = AdminConfig.showAttribute(target_ws, 'name')
    # 执行停止操作
    AdminTask.stopWebServer(f'[-webServerName {ws_name} -nodeName {target_node}]')
    # 保存配置(如需持久化操作)
    AdminConfig.save()
    print(f"已触发Web服务器 {ws_name} 的停止操作")
else:
    print(f"节点 {target_node} 上未找到Web服务器配置")

内容的提问来源于stack exchange,提问作者mila002

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:35:04