|
WebLogic 脚本工具 (WLST) 是一个命令行脚本界面,系统管理员和操作员可以使用它来监视和管理 WebLogic Server 实例和域。WLST 脚本环境基于 Java 脚本解释器 Jython。除 WebLogic 脚本功能外,还可以使用解释语言(包括本地变量、条件变量以及流控制语句)的常用功能。WebLogic Server 开发人员和管理员可以按照 Jython 语言语法扩展 WebLogic 脚本语言,以满足其环境需要。请参阅 http://www.jython.org。
WLST 功能包括下列 WebLogic Server 命令行实用工具的功能:weblogic.Admin 实用工具,用于询问 MBean 和配置 WebLogic Server 实例(不赞成在此版本的 WebLogic Server 中使用)、wlconfig Ant 任务工具,用于对 WebLogic Server 配置进行更改,以及 weblogic.Deployer 实用工具,用于部署应用程序。有关这些命令行实用工具的详细信息,请参阅:
通过交替使用 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 脱机版,可以新建域或更新现有域,而无需连接到正在运行的 WebLogic Server - 支持与 Configuration Wizard 相同的功能)。
WLST 脱机版仅提供对保留的配置信息的访问。您可以创建新的配置信息,以及检索和更改保存在域配置文件(位于 config 目录中,例如 config.xml)或使用 Template Builder 创建的域模板 JAR 中的现有配置信息。
| 注意: | 因为通过 WLST 脱机版,您只能访问和更新配置文件中出现的配置对象,所以若要针对尚未以 XML 元素保存在配置文件中的配置对象查看和/或更改特性值,必须首先创建配置对象。 |
WLST 是命令行解释器,它解释命令的方式可以是交互式的,即在命令提示下一次只提供一条命令;也可以是批处理式的,即以文件(脚本)或嵌入 Java 代码中批量提供。操作模式给出发出 WLST 命令的方法:
在交互模式下,可以在命令提示下输入命令并查看响应,对于在生成脚本前了解工具、原型验证命令语法和验证配置选项非常有用。以交互方式使用 WLST 对于在进行关键配置更改后获取即时反馈尤其有用。WLST 脚本外壳可维护与 WebLogic Server 实例的持久性连接。因为在整个用户会话期间都在维护持久性连接,所以可以捕获针对服务器执行的多个步骤。请参阅记录用户交互。
另外,为 WebLogic Server 实例输入的每个命令都使用已建立的同一连接,因此在执行命令时,不需要用户重新进行身份验证,也不需要单独的 JVM。
脚本就像外壳脚本一样,可以调用一系列 WLST 命令,而无需您输入命令。脚本包含文件扩展名为 .py 的文本文件中的 WLST 命令,即 filename.py。可以使用包含 Jython 命令的脚本文件运行脚本。请参阅运行脚本。
在清单 2-1 中,WLST 会连接到正在运行的管理服务器实例、创建 10 台受管服务器和两个群集,并向群集分配服务器。
在运行某个脚本前,编辑此脚本以包含管理服务器的用户名、密码和 URL,然后启动此服务器。请参阅运行脚本。
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 解释器的实例,如何使用此实例连接到正在运行的服务器、如何创建两台服务器并将这两台服务器分配给群集。
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();
}
}
CLASSPATH 环境变量,将 WL_HOME\server\bin 添加到 PATH 环境变量,其中 WL_HOME 指 WebLogic Server 的顶级安装目录。
可以使用 WL_HOME\server\bin\setWLSEnv 脚本设置这两个变量。
在 Windows 上,“开始”菜单上的快捷方式可设置环境变量并调用 WLST(“Tools”
“WebLogic Scripting Tool”)。
java -Dweblogic.security.SSL.ignoreHostnameVerification=true -Dweblogic.security.TrustKeyStore=DemoTrust weblogic.WLST
java weblogic.WLSTjava weblogic.WLST -loadProperties propertyFilename| 注意: | 可以使用 -loadProperties 选项加载某个文件中的属性值,并使这些值在 WLST 会话中可用。此选项的用法与 loadProperties 命令的用法类似。有关详细信息,请参阅 loadProperties。 |
有关详细信息,请参阅使用 WLST 脱机版创建和配置 WebLogic 域。
要使用 WLST 联机版,请启动 WebLogic Server 实例(请参阅启动和停止服务器),然后使用 connect 命令将 WLST 连接到服务器。
wls:/(offline)> connect('username','password','t3s://localhost:7002')
Connecting to weblogic server instance running at t3s://localhost:7002 as username weblogic ...
Successfully connected to Admin Server 'myserver' that belongs to domain 'mydomain'.
| 注意: | BEA Systems 强烈建议通过 SSL 端口或管理端口将 WLST 连接到服务器。如果不这样做,将显示以下警告消息: |
| 注意: | 注意:使用了不安全协议连接到服务器。 |
有关 connect 命令的详细信息,请参阅 connect。
请按照下列规则输入 WLST 命令。另请参阅 WLST 命令和变量参考和 WLST 联机版和脱机版命令概要。
'newServer' 或 "newServer"。\),例如指定文件路径名时,应在带引号的字符串之前加 r 以指示 WLST 按此字符串的原始形式对其进行解释,并确保将反斜杠当作文字进行处理。此格式表示标准的 Jython 语法。例如:readTemplate(r'c:\mytemplate.jar')
.)、正斜杠 (/) 或反斜杠 (\)。
如果需要对名称中包含正斜杠 (/) 的对象名称执行 cd 操作,请使用括号将配置对象名称括起来。例如:
cd('JMSQueue/(jms/REGISTRATION_MDB_QUEUE)')
help 命令可显示有关 WLST 命令的帮助信息。请参阅获取帮助。
不在域的 XML 配置文档中存储 WebLogic Server 用户、安全组和安全角色的用户名和密码。域改用被称为“身份验证提供程序”的单独软件组件来存储、传输以及访问安全数据。身份验证提供程序可以使用不同类型的系统存储安全数据。WebLogic Server 安装的身份验证提供程序使用嵌入式 LDAP 服务器。
当您使用 WLST 脱机版创建域模板时,WLST 将身份验证提供程序的数据存储器与域文档的其余部分一起打包。如果使用域模板创建一个域,新域具有域模板上身份验证提供程序数据存储器的完全拷贝。
不能使用 WLST 脱机版修改身份验证提供程序数据存储器中的数据。
但是可以使用 WLST 联机版与身份验证提供程序进行交互以及添加、删除或修改用户、组和角色。有关详细信息,请参阅 安全管理。
java weblogic.WLST filePath.py
此命令可通过使用单一命令调用 WLST 和执行脚本文件。请参阅调用 WLST 和运行脚本。
execfile(filePath.py)
此命令在调用 WLST 后执行脚本文件。请参阅从 WLST 运行脚本。
要运行本指南中的脚本示例,请复制并保存文件扩展名为 .py 的文本文件(即 filename.py)中的命令。以下列出了如何使用包含命令的文本文件来运行脚本。从头创建 script.py 文件时,可以将示例脚本用作模板。有关详细信息,请参阅 WLST 示例脚本。
如果脚本可以将 WLST 连接到正在运行的服务器实例,则请在运行脚本前启动 WebLogic Server。
下列命令可以调用 WLST、执行指定的脚本和退出 WLST 脚本外壳。要禁止退出 WLST,请使用 -i 标志。
java weblogic.WLST filePath.py
java weblogic.WLST -i filePath.py
| 注意: | 如果从中调用 WLST 的目录或 user.home(由 JVM 决定的操作系统用户帐户的主目录)目录中已存在名为 wlstProfile.py 的 WLST 脚本,则一旦调用 WLST,就会自动执行这些命令。在这种情况下,不需要在命令行上指定 WLST 脚本文件的名称。 |
c:\>java weblogic.WLST c:/temp/example.pyInitializing WebLogic Scripting Tool (WLST) ...
starting the script ...
...
execfile(filePath)
c:\>java weblogic.WLSTInitializing WebLogic Scripting Tool (WLST) ...
...
...
wls:/(offline)>execfile('c:/temp/example.py')starting the script ...
...
高级用户可以从 WebLogic Server 中将 WLST 导入为 Jython 模块。导入 WLST 后,可以将其与其他 Jython 模块一起使用,使用 Jython 语法直接调用 Jython 命令。
主要步骤包括将 WLST 定义和方法声明转换为 .py 文件、将 WLST 文件导入到 Jython 模块中,以及从导入的文件中引用 WLST。
要将 WLST 导入为 Jython 模块,请执行下列操作:
c:\>java weblogic.WLSTwls:/(offline)>
writeIniFile 命令将 WLST 定义和方法声明转换为 .py 文件。
wls:/(offline)> writeIniFile("wl.py")The Ini file is successfully written to wl.py
wls:/(offline)>
c:\>java org.python.util.jython
Jython 包管理器将处理类路径中的 JAR 文件。将出现以下 Jython 提示:
import 命令将 WLST 模块导入到 Jython 模块中。
wl.connect('username','password')....
| 注意: | 将 WLST 用作 Jython 模块时,在包含 block 参数的所有 WLST 命令中,block 始终设置为 true,以指定在完成命令之前,WLST 将阻塞用户交互。请参阅 WLST 命令和变量参考。 |
wls:/mydomain/serverConfig>exit()Exiting WebLogic Scripting Tool ...
c:\>
wlst Ant 任务在随 WebLogic Server 一起提供的 Ant 版本中是预定义的,使用此任务可以从 Ant 生成文件中运行 WLST 脚本。
| 注意: | 如果要利用您自己的 Ant 安装使用该任务,请在生成文件中添加以下任务定义: |
| 注意: | <taskdef name="wlst" classname="weblogic.ant.taskdefs.management.WLSTTask" /> |
wlst Ant 任务,以执行 WLST 命令。例如:<target name="runwlst">
<wlst fileName="./myscript.py" executeScriptBeforeFile="true"
debug="false" failOnError="false">
<script>
connect('weblogic','weblogic','t3://localhost:7001')
</script>
</wlst>
</target>
通过 wlst Ant 任务,可以使用 fileName 特性指定 WLST 命令,或者将 WLST 脚本命令嵌入到生成文件内的 <script> 标记中。有关 Ant 任务命令语法的详细信息,请参阅 wlst Ant 任务语法。
ant,也可以通过将命令传递到目标参数执行 Ant 任务或 build.xml 文件中指定的任务: prompt> ant runwlst
| 注意: | 使用 ant -verbose 获取来自 wlst 任务的详细消息。 |
<wlst propertiesFile="propsFile" fileName="fileName" arguments="arglist" failOnError="value" executeScriptBeforeFile="value" debug="value">
<script>wlst-commands</script>
可以使用 fileName 特性在某个 WLST 脚本 (.py) 文件中指定 WLST 命令,并指定此文件,或将 WLST 脚本命令嵌入到生成文件内,并用 <script> 标记将这些命令括起来。
下表定义了可指定为 wlst Ant 任务一部分的 Ant 任务特性。
t3://localhost():7001 的服务器,编辑配置以新建服务器,以及保存并激活配置更改。(请注意,因为已将 executeScriptBeforeFile 设置为 true,所以将在执行指定 WLST 脚本文件之前,先执行嵌入式脚本。)myscript.py,此文件位于当前目录下。sys.argv 变量访问这些参数。wlst Ant 任务失败也将继续执行。<target name="configServer">
<wlst debug="false" failOnError="false" executeScriptBeforeFile="true"
fileName="./myscript.py">
<script>
connect('weblogic','weblogic','t3://localhost:7001')
</script>
</wlst>
</target>
myscript.py。(请注意,因为已将 executeScriptBeforeFile 设置为 false,所以在执行嵌入式脚本之前,将先执行 WLST 脚本文件。)t3://localhost():7001 的服务器、访问域中的服务器并打印服务器列表。true" 设置,如果 wlst 任务执行失败,将导致生成失败。<target name="loop">
<wlst debug="true" executeScriptBeforeFile="false"
fileName="./myscript.py" failOnError="true">
<script>
print 'In the target loop'
connect('weblogic','weblogic','t3://localhost:7001')
svrs = cmo.getServers()
print 'Servers in the domain are'
for x in svrs: print x.getName()
</script>
</wlst>
</target>
要显示有关 WLST 命令和变量的信息,请输入 help 命令。
如果指定 help 命令没有参数,WLST 将概括命令类别。要显示有关特定命令、变量或命令类别的信息,请将其名称指定为 help 命令的参数。要在命令行列出所有联机版或脱机版命令的概要,请分别使用下列命令:
help('online')
help('offline')
help 命令支持查询;例如 help('get*') 可显示以 get 开始的所有命令的语法和用法信息。
例如,要显示有关 disconnect 命令的信息,请输入以下命令:
wls:/mydomain/serverConfig> help('disconnect')
Description:
Disconnect from a weblogic server instance.
Example:
wls:/mydomain/serverConfig> disconnect()
startRecording(recordFilePath,[recordAll])
stopRecording()
输入 startRecording 命令时,必须指定用于存储 WLST 命令的文件路径名。还可以指定是否要捕获所有用户交互,还是只捕获 WLST 命令;recordAll 参数默认为 False。
例如,要将 WLST 命令记录在 record.py 文件中,请输入以下命令:
wls:/mydomain/serverConfig> startRecording('c:/myScripts/record.py')
有关详细信息,请参阅 startRecording 和 stopRecording。
redirect(outputFile,[toStdOut])
stopRedirect()
必须指定要重定向 WLST 输出到的文件的路径名。还可以指定是否要将 WLST 输出发送到 stdout;toStdOut 参数默认为 True。
例如,要重定向 WLST 输入到当前目录下的 logs/wlst.log 文件,并禁用将输出发送到 stdout,请输入以下命令:
wls:/mydomain/serverConfig> redirect('./logs/wlst.log', 'false')| 注意: | WLST 不会对某些操作进行重定向。例如 WLST 不会重定向 Jython 层的消息输出。 |
有关详细信息,请参阅 redirect 和 stopRedirect。
要将现有的服务器配置(config 目录)转换为可执行的 WLST 脚本,请输入:
configToScript([domainDir], [scriptPath], [overwrite], [propertiesFile], [deploymentScript])
| 注意: | configToScript() 可创建辅助用户配置文件和用户密钥文件,以保持加密的特性。 |
可使用生成的脚本在其他服务器上重新创建资源。运行生成的脚本前,应更新属性文件,指定适合于您的环境的值。运行生成的脚本时:
例如,以下命令可从位于 c:/bea/user_projects/domains/mydomain 域中创建 WLST 脚本,然后将其保存到 c:/bea/myscripts。
wls:/(offline)> configToScript('c:/bea/user_projects/domains/mydomain',
'c:/bea/myscripts')
有关详细信息,请参阅 configToScript。
可以使用 WLST 主目录自定义 WLST,默认情况下主目录位于 WL_HOME/common/wlst,其中 WL_HOME 指 WebLogic Server 的顶级安装目录。在 WLST 主目录中定义的所有 Python 脚本都是在启动 WLST时导入的。
| 注意: | 可通过在命令行上传递以下参数来自定义默认 WLST 主目录:-Dweblogic.wlstHome=<another-directory> |
|
|
|