使用脚本编制配置共享库
可以使用脚本编制为应用程序服务器配置共享库。共享库是多个应用程序使用的文件。创建共享库以减少系统上重复库文件的数目。
开始之前
可通过两种方法来完成本任务。本主题中的示例使用 AdminConfig 对象来创建和配置共享库。或者,您可以使用 AdminResources 脚本库中的 createSharedLibrary 脚本来配置共享库。
脚本库提供了一组过程,可自动执行最常见的管理功能。 可以逐个运行每个脚本过程,也可以将几个过程组合在一起来快速开发新脚本。
过程
- 启动 wsadmin 脚本编制工具。
- 标识服务器并将其指定给 server 变量。例如:
使用 Jacl:
set serv [$AdminConfig getid /Cell:mycell/Node:mynode/Server:server1/]
- 使用 Jython:
serv = AdminConfig.getid('/Cell:mycell/Node:mynode/Server:server1/') print serv
表 1. getid 命令元素. 下表描述 getid 命令的每个元素。 元素 描述 set 是 Jacl 命令 serv 是变量名 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere® Application Server 配置的对象 getid 是 AdminConfig 命令 单元 是属性 mycell 是属性的值 Node 是属性 mynode 是属性的值 Server 是属性 server1 是属性的值 示例输出:server1(cells/mycell/nodes/mynode/servers/server1|server.xml#Server_1)
- 在服务器中创建共享库。
以下是如何使用 Jacl 或 Jython 来创建共享库的示例。
使用 Jacl:
$AdminConfig create Library $serv {{name mySharedLibrary} {classPath c:/mySharedLibraryClasspath}}
$AdminConfig create Library $serv {{name mySharedLibrary} {classPath /mySharedLibraryClasspath}}
$AdminConfig create Library $serv {{name mySharedLibrary} {classPath /home/myProfile/mySharedLibraryClasspath}}
使用 Jython:
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', 'c:/mySharedLibraryClasspath']])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', '/mySharedLibraryClasspath']])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', 'home/myProfile/mySharedLibraryClasspath']])
避免故障:
- 如果您在使用 Jython,且该类路径没有包含任何空格,那么您可以将分号 (;) 或空格用作分隔符。例如:
或AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath','test1.jar;test2.jar;test3.jar']])
AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath','test1.jar test2.jar test3.jar']])
- 如果您在使用 Jacl,且该类路径包含一个或多个空格,那么您必须在类路径前后添加其他花括号或引号。例如:
或$AdminConfig create Library $serv {{name mySharedLibrary} {classPath {c:/Program Files/JDBC Driver/test.jar}}}
$AdminConfig create Library $serv {{name mySharedLibrary} {classPath "c:/Program Files/JDBC Driver/test.jar"}}
- 如果您在使用 Jython,且该类路径包含一个或多个空格,那么您必须将分号 (;) 用作分隔符。例如:
或者如果只有一条路径:AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath','c:/Program Files/JDBC Driver/test.jar;a.jar']])
AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath','test1.jar test2.jar test3.jar']])
- 如果您在使用 Jython 且该类路径包含一个或多个空格,那么您必须在类路径前后添加其他方括号或引号。例如:
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [['classPath', 'c:/Program Files/JDBC Driver/test.jar']]])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [['classPath', '/Program Files/JDBC Driver/test.jar']]])
或print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [['classPath', 'home/myProfile/Program Files/JDBC Driver/test.jar']]])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', "'c:/Program Files/JDBC Driver/test.jar'"]])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', "'/Program Files/JDBC Driver/test.jar'"]])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath', "'home/myProfile/Program Files/JDBC Driver/test.jar'"]])
- 在使用 Jython 时,如果类路径包含多条路径,那么您可以使用列表语法或者分号定界的字符串语法来指定多条类路径。
使用列表语法:
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [classPath [test1.jar test2.jar test3.jar]]]')
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath [test1.jar test2.jar test3.jar]]]')
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath [test1.jar test2.jar test3.jar]]]')
使用以分号定界的字符串语法:
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [classPath,'test1.jar;test2.jar;test3.jar']])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [classPath,'test1.jar;test2.jar;test3.jar']])
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [classPath,'test1.jar;test2.jar;test3.jar']])
- 在使用 Jython 时,如果类路径包含多条路径,且其中某个类路径包含一个或多个空格,请用引号将包含空格的路径字符串引起来。例如:
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], [classPath [test1.jar "C:/Program Files/JDBC Driver/test.jar" test3.jar]]]')
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath [test1.jar "C:/Program Files/JDBC Driver/test.jar" test3.jar]]]')
print AdminConfig.create('Library', serv, [['name', 'mySharedLibrary'], ['classPath [test1.jar "C:/Program Files/JDBC Driver/test.jar" test3.jar]]]')
表 2. create Library 命令元素. 下表描述 create Library 命令的每个元素。 元素 描述 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 create 是 AdminConfig 命令 Library 是属性 serv 对步骤 1 中指定的服务器标识所求的值 name 是属性 mySharedLibrary 是 name 属性的值 classPath 是属性 /mySharedLibraryClasspath 是 classpath 属性的值 print 是 Jython 命令 示例输出:MysharedLibrary(cells/mycell/nodes/mynode/servers/server1|libraries.xml#Library_1)
- 识别来自此服务器的应用程序服务器并将其指定给 appServer 变量。例如:
使用 Jacl:
set appServer [$AdminConfig list ApplicationServer $serv]
- 使用 Jython:
appServer = AdminConfig.list('ApplicationServer', serv) print appServer
表 3. list 命令元素. 下表描述 create list 命令的每个元素。 元素 描述 set 是 Jacl 命令 appServer 是变量名 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 list 是 AdminConfig 命令 ApplicationServer 是属性 serv 对步骤 1 中指定的服务器标识所求的值 print 是 Jython 命令 示例输出:server1(cells/mycell/nodes/mynode/servers/server1|server.xml#ApplicationServer_1
- 标识应用程序服务器中的类装入器并将其指定给 classLoader 变量。例如:
- 为使用与服务器关联的现有类装入器,下列命令使用第一个类装入器:
使用 Jacl:
set classLoad [$AdminConfig showAttribute $appServer classloaders] set classLoader1 [lindex $classLoad 0]
- 使用 Jython:
classLoad = AdminConfig.showAttribute(appServer, 'classloaders') cleanClassLoaders = classLoad[1:len(classLoad)-1] classLoader1 = cleanClassLoaders.split(' ')[0]
表 4. showAttribute 命令元素. 下表描述 showAttribute 命令的每个元素。 元素 描述 set 是 Jacl 命令 classLoad, classLoader1 是变量名 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 showAttribute 是 AdminConfig 命令 appServer 对步骤 3 中指定的应用程序服务器标识所求的值 classloaders 是属性 print 是 Jython 命令 - 要创建新的类装入器,请发出以下命令:
使用 Jacl:
set classLoader1 [$AdminConfig create Classloader $appServer {{mode PARENT_FIRST}}]
- 使用 Jython:
classLoader1 = AdminConfig.create('Classloader', appServer, [['mode', 'PARENT_FIRST']])
表 5. create Classloader 命令元素. 下表描述 create Classloader 命令的每个元素。 元素 描述 set 是 Jacl 命令 classLoader1 是变量名 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 create 是 AdminConfig 命令 Classloader 是属性 appServer 对步骤 3 中指定的应用程序服务器标识所求的值 方式 是属性 PARENT_FIRST 是属性的值 print 是 Jython 命令 示例输出:(cells/mycell/nodes/mynode/servers/server1|server.xml#Classloader_1)
- 为使用与服务器关联的现有类装入器,下列命令使用第一个类装入器:
- 通过类装入器使创建的共享库与应用程序服务器关联。例如:
使用 Jacl:
$AdminConfig create LibraryRef $classLoader1 {{libraryName MyshareLibrary}}
- 使用 Jython:
print AdminConfig.create('LibraryRef', classLoader1, [['libraryName', 'MyshareLibrary']])
表 6. create LibraryRef 命令元素. 下表描述 create LibraryRef 命令的每个元素。 元素 描述 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 create 是 AdminConfig 命令 LibraryRef 是属性 classLoader1 对步骤 4 中指定的类装入器标识所求的值 libraryName 是属性 MyshareLibrary 是属性的值 print 是 Jython 命令 示例输出:(cells/mycell/nodes/mynode/servers/server1|server.xml#LibraryRef_1)
- 保存配置更改。 请使用以下命令示例来保存配置更改:
AdminConfig.save()
- 使节点同步。 使用 AdminNodeManagement 脚本库中的 syncActiveNode 或 syncNode 脚本将配置更改传播至一个或多个节点。
- 使用 syncActiveNodes 脚本将更改传播至单元中的每个节点,如以下示例所示:
AdminNodeManagement.syncActiveNodes()
- 使用 syncNode 脚本将更改传播至特定节点,如以下示例所示:
AdminNodeManagement.syncNode("myNode")
- 使用 syncActiveNodes 脚本将更改传播至单元中的每个节点,如以下示例所示:
相关任务:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_library
文件名:txml_library.html