WLST(Weblogic Script Tool)

来源:互联网 发布:故君子莫大乎与人为善 编辑:程序博客网 时间:2024/04/30 10:35

参考  http://edocs.weblogicfans.net/wls/docs92/config_scripting/intro.html#wp1034390

什么是 WebLogic 脚本工具?

WebLogic 脚本工具 (WLST) 是一个命令行脚本界面,系统管理员和操作员可以使用它来监视和管理 WebLogic Server 实例和域。WLST 脚本环境基于 Java 脚本解释器 Jython。除 WebLogic 脚本功能外,还可以使用解释语言(包括本地变量、条件变量以及流控制语句)的常用功能。WebLogic Server 开发人员和管理员可以按照 Jython 语言语法扩展 WebLogic 脚本语言,以满足其环境需要。请参阅http://www.jython.org

WLST 可以做什么?

使用 WLST 可以执行下列任务:

  • 通过使用预定义配置和扩展模板,将 WebLogic Server 域传播到多个目标。请参阅使用 WLST 脱机版创建和配置 WebLogic 域。
  • 检索域配置和运行时信息。请参阅导航和询问 MBean。
  • 编辑域配置并将更改保留在域的配置文件中。请参阅编辑配置 MBean。
  • 编辑自定义、由用户创建的 MBean 和非 WebLogic Server Mbean,例如 WebLogic Integration Server Mbean 和 WebLogic Portal Server Mbean。请参阅访问自定义 MBean。
  • 实现域配置任务和应用程序部署自动化。请参阅 WebLogic Server 管理任务自动化。
  • 控制和管理服务器生命周期。请参阅管理服务器和服务器生命周期。
  • 访问节点管理器,以远程或本地方式启动、停止和挂起服务器实例,而无需存在正在运行的管理服务器。请参阅使用 WLST 和节点管理器来管理服务器。

WLST 功能包括下列 WebLogic Server 命令行实用工具的功能:weblogic.Admin 实用工具,用于询问 MBean 和配置 WebLogic Server 实例(不赞成在此版本的 WebLogic Server 中使用)、wlconfig Ant 任务工具,用于对 WebLogic Server 配置进行更改,以及 weblogic.Deployer 实用工具,用于部署应用程序。有关这些命令行实用工具的详细信息,请参阅:

  • "“使用 WebLogic Server 开发应用程序”中的使用 Ant 任务配置和使用 WebLogic Server 域,其中描述了将 WebLogic Ant 任务用于启动和停止 WebLogic Server 实例以及配置 WebLogic Server 域。
  • "“将应用程序部署到 WebLogic Server”中的部署工具概述,其中描述了 WebLogic Server 提供的用于部署应用程序和独立模块的几种工具。

通过交替使用 WLST、命令行实用工具和管理控制台,可以创建、配置和管理域。选择何种方法取决于您更喜欢使用图形界面还是命令行界面,同时也取决于是否可以通过使用脚本使任务自动化。请参阅脚本模式。

WLST 如何工作?

可以使用脚本工具联机版(连接到正在运行的管理服务器实例或受管服务器实例)和脱机版(断开与正在运行的服务器的连接)。有关 WLST 联机版和脱机版命令的信息,请参阅 WLST 联机版和脱机版命令概要。

使用 WLST 联机版

WLST 联机版使访问通过 JMX 进行管理的受管 Bean (MBean) 和 Java 对象(这些对象为底层资源提供了管理接口)变得简便。WLST 是 JMX 客户端,所有使用 WLST 联机版执行的任务也都可以使用 JMX 以编程方式执行。

有关使用 JMX 管理 WebLogic Server 资源的信息,请参阅使用 JMX 开发自定义管理实用工具。

如果 WLST 已连接到管理服务器实例,则使用脚本工具可以导航和询问 MBean,并且向服务器提供配置数据。如果 WLST 已连接到受管服务器实例,则其功能仅限于浏览 MBean 层次。

无法使用 WLST 更改受管服务器上的 MBean 的值时,可以使用管理 API 进行更改。BEA Systems 建议仅更改管理服务器上的配置 MBean 的值。更改受管服务器上 MBean 的值会导致域的配置不一致。

使用 WLST 脱机版

通过使用 WLST 脱机版,可以新建域或更新现有域,而无需连接到正在运行的 WebLogic Server - 支持与 Configuration Wizard 相同的功能)。

WLST 脱机版仅提供对保留的配置信息的访问。您可以创建新的配置信息,以及检索和更改保存在域配置文件(位于 config 目录中,例如 config.xml)或使用 Template Builder 创建的域模板 JAR 中的现有配置信息。

注意:因为通过 WLST 脱机版,您只能访问和更新配置文件中出现的配置对象,所以若要针对尚未以 XML 元素保存在配置文件中的配置对象查看和/或更改特性值,必须首先创建配置对象。

 


操作模式

WLST 是命令行解释器,它解释命令的方式可以是交互式的,即在命令提示下一次只提供一条命令;也可以是批处理式的,即以文件(脚本)或嵌入 Java 代码中批量提供。操作模式给出发出 WLST 命令的方法:

  • 在命令行上以交互方式发出 - 交互模式
  • 在文本文件中 - 脚本模式
  • 嵌入到 Java 代码中 - 嵌入式模式

交互模式

在交互模式下,可以在命令提示下输入命令并查看响应,对于在生成脚本前了解工具、原型验证命令语法和验证配置选项非常有用。以交互方式使用 WLST 对于在进行关键配置更改后获取即时反馈尤其有用。WLST 脚本外壳可维护与 WebLogic Server 实例的持久性连接。因为在整个用户会话期间都在维护持久性连接,所以可以捕获针对服务器执行的多个步骤。请参阅记录用户交互。

另外,为 WebLogic Server 实例输入的每个命令都使用已建立的同一连接,因此在执行命令时,不需要用户重新进行身份验证,也不需要单独的 JVM。

脚本模式

脚本就像外壳脚本一样,可以调用一系列 WLST 命令,而无需您输入命令。脚本包含文件扩展名为 .py 的文本文件中的 WLST 命令,即 filename.py。可以使用包含 Jython 命令的脚本文件运行脚本。请参阅运行脚本。

通过使用 WLST 脚本,可以:

  • 使 WebLogic Server 配置和应用程序部署自动化
  • 在拓扑的多个节点之间迭代应用同一配置设置
  • 利用在交互模式下受限制的脚本语言功能,例如循环、流控制构造、条件语句、变量计算等
  • 安排脚本在不同的时间运行
  • 使重复的任务和复杂的过程自动化
  • 在无人参与数据中心配置应用程序

在清单 2-1 中,WLST 会连接到正在运行的管理服务器实例、创建 10 台受管服务器和两个群集,并向群集分配服务器。

在运行某个脚本前,编辑此脚本以包含管理服务器的用户名、密码和 URL,然后启动此服务器。请参阅运行脚本。

清单 2-1 创建群集域
from java.util import *
from javax.management import *
import javax.management.Attribute
print 'starting the script ....'
connect('username','password','t3://localhost:7001')
clusters = "cluster1","cluster2"
ms1 = {'managed1':7701,'managed2':7702,'managed3':7703, 'managed4':7704, 'managed5':7705}
ms2 = {'managed6':7706,'managed7':7707,'managed8':7708, 'managed9':7709, 'managed10':7710}
clustHM = HashMap()
edit()
startEdit()
for c in clusters:
  print 'creating cluster '+c
  clu = create(c,'Cluster')
  clustHM.put(c,clu)
cd('../..')
clus1 = clustHM.get(clusters[0]) 
clus2 = clustHM.get(clusters[1])
for m, lp in ms1.items():
  managedServer = create(m,'Server')
  print 'creating managed server '+m
  managedServer.setListenPort(lp)
  managedServer.setCluster(clus1)
for m1, lp1 in ms2.items():
  managedServer = create(m1,'Server')
  print 'creating managed server '+m1
  managedServer.setListenPort(lp1)
  managedServer.setCluster(clus2)
save()
activate(block="true")
disconnect()
print 'End of script ...'
exit()

嵌入式模式

在嵌入式模式下,可以在 Java 代码中实例化 WLST 解释器的实例,然后使用此实例运行 WLST 命令和脚本。在交互模式和脚本模式中使用的所有 WLST 命令和变量都可以在嵌入式模式下运行。

清单 2-2 说明了如何实例化 WLST 解释器的实例,如何使用此实例连接到正在运行的服务器、如何创建两台服务器并将这两台服务器分配给群集。

清单 2-2 运行 Java 类的 WLST
package wlst;
import java.util.*;
import weblogic.management.scripting.utils.WLSTInterpreter;
import org.python.util.InteractiveInterpreter;
/**
 * 将 WLST 连接到运行服务器的简单嵌入式 WLST 示例,
 * 创建两个服务器,并将它们分配到新建的群集,然后退出。
 * <p>标题: EmbeddedWLST.java</p>
 * <p>版权: 版权所有 (C) 2004</p>
 * <p>公司: BEA Systems</p>
 * @作者 Satya Ghattu (sghattu@bea.com)
 */
public class EmbeddedWLST 
{
  static InteractiveInterpreter interpreter = null;
  EmbeddedWLST() {
    interpreter = new WLSTInterpreter();
  }
private static void connect() {
    StringBuffer buffer = new StringBuffer();
    buffer.append("connect('weblogic','weblogic')");
    interpreter.exec(buffer.toString());
  }
private static void createServers() {
    StringBuffer buf = new StringBuffer();
    buf.append(startTransaction());
    buf.append("man1=create('msEmbedded1','Server')/n");
    buf.append("man2=create('msEmbedded2','Server')/n");
    buf.append("clus=create('clusterEmbedded','Cluster')/n");
    buf.append("man1.setListenPort(8001)/n");
    buf.append("man2.setListenPort(9001)/n");
    buf.append("man1.setCluster(clus)/n");
    buf.append("man2.setCluster(clus)/n");
    buf.append(endTransaction());
    buf.append("print `Script ran successfully ...'/n");
    interpreter.exec(buf.toString());
  }
private static String startTransaction() {
    StringBuffer buf = new StringBuffer();
    buf.append("edit()/n");
    buf.append("startEdit()/n");
    return buf.toString();
  }
private static String endTransaction() {
    StringBuffer buf = new StringBuffer();
    buf.append("save()/n");
    buf.append("activate(block='true')/n");
    return buf.toString();
  }
  public static void main(String[] args) {
    new EmbeddedWLST();
    connect();
    createServers();
  }
}