使用 wsadmin 工具可以从一个单元中抽取属性文件,在抽取的属性文件中修改特定于环境的变量,然后将修改后的属性文件应用于另一个单元。修改特定于环境的变量将使属性文件变得可移植。
开始之前
如果您要编辑的属性文件是在产品 V7.0.0.7 之前创建的,请检查属性文件并查看它是否包含 XMI 标识,如下所示:
#
# SubSection 1.0 # Virtual Hosts
#
ResourceType=VirtualHost
ImplementingResourceType=VirtualHost
ResourceId=Cell=!{cellName}:VirtualHost=ID#VirtualHost_1
#
#Properties
#
name=default_host
EnvironmentVariablesSection
#Environment Variables
cellName=myNode04Cell
XMI 标识是创建配置对象时 V7.0.0.7 之前版本的产品生成的唯一标识。对于同一对象,另一环境中的 XMI 标识可能不同。在此示例中,一个环境中的缺省主机的 VirtualHost 资源具有 XMI 标识:VirtualHost_1。在另一环境中,此 XMI 标识可能是其他值,例如 VirtualHost_2。包含 XMI 标识的属性文件不可移植。在没有首先修改资源标识的情况下,您无法将具有 XMI 标识的抽取属性应用于另一环境。
具有可移植资源标识的属性文件中相同的虚拟主机部分如下:
#
# SubSection 1.0 # Virtual Hosts
#
ResourceType=VirtualHost
ImplementingResourceType=VirtualHost
ResourceId=Cell=!{cellName}:VirtualHost=default_host
#
#Properties
#
name=default_host
EnvironmentVariablesSection
#Environment Variables
cellName=myNode04Cell
在此示例中,name 用作关键字属性在环境内唯一地标识 VirtualHost 对象。一个对象可以具有多个关键字属性以在相同类型的不同实例之间唯一地标识该对象。
关于此任务
您可以将具有可移植资源标识的属性文件应用于另一环境。
为了抽取属性文件以便它具有可移植资源标识,请在将 PortablePropertiesFile 选项设置为 true 的情况下使用 extractConfigProperties 命令。
以此选项抽取的属性文件是可移植的。抽取的属性文件没有唯一地标识每个资源。一个资源标识可能具有一个或多个属性名称/值对;例如,nodeName 属性标识节点而 serverName 属性标识服务器。
缺省情况下,抽取的属性文件是不可移植的。但是在 PortablePropertiesFile 选项设置为 true 的情况下抽取的属性文件是可移植的。
在 PortablePropertiesFile 选项设置为 true 的情况下抽取属性文件之后,请更改此属性文件中的 EnvironmentVariablesSection,将此属性文件复制到目标环境,然后运行 applyConfigProperties 命令将此属性文件应用于另一单元。
您也可以使用交互方式来运行这些命令,如以下语法所示:
AdminTask.command_name('-interactive')
过程
- 启动 wsadmin 脚本编制工具。
要使用 Jython 语言来启动 wsadmin,请从服务器概要文件的
bin 目录运行以下命令:
wsadmin -lang jython
- 在 PortablePropertiesFile 选项设置为 true 时,使用 extractConfigProperties 命令来抽取属性文件。
例如,要以可移植格式将名为 server1 的服务器的属性抽取到 server.props 文件,请运行以下 wsadmin 命令:
AdminTask.extractConfigProperties('[-propertiesFileName server.props -configData Server=server1
-options [[PortablePropertiesFile true]] ]')
如果属性文件指的是目标环境中不存在的服务器、节点、应用程序、集群或授权组类型的资源,请考虑将 GenerateTemplates 选项设置为 true:
AdminTask.extractConfigProperties('[-propertiesFileName server.props -configData Server=
-options [[GenerateTemplates true][PortablePropertiesFile true]] ]')
使用 GenerateTemplates 选项时,抽取的属性文件具有属性部分,其支持创建相同类型的另一对象。缺省情况下,此选项是禁用的。
- 可选: 在编辑器中打开抽取的属性文件,然后检查资源标识以确保其可移植。
可移植的标识没有唯一地标识每个资源。以下示例显示属性文件的各个子部分中的可移植标识。
- 示例 1:将属性名称和值用于资源标识
在此示例中,jndiName 是标识 DataSource 的可移植资源标识:
#
# SubSection 1.0.1.0 # DataSource attributes
#
Resou:rceType=DataSource
ImplementingResourceType=JDBCProvider
ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:JDBCProvider=Derby JDBC
Provider(XA):DataSource=jndiName#jdbc/DefaultEJBTimerDataSource
- 示例 2:将多个属性名称/值对用于资源标识
在此示例中,nodeName 和 serverName 属性一起标识 coreGroupServer 资源。
#
# SubSection 1.0.8.0 # CoreGroupServer Section
#
ResourceType=CoreGroupServer
ImplementingResourceType=CoreGroup
ResourceId=Cell=!{cellName}:CoreGroup=!{coreGroup}:CoreGroupServer=nodeName#myNode04,serverName#server1
AttributeInfo=coreGroupServers
- 示例 3:单项资源标识
在此示例中,单元中只有一个安全对象。
因为将安全对象视为单个对象,所以无需任何属性来唯一地标识此资源。
#
# SubSection 1.0 # Security Section
#
ResourceType=Security
ImplementingResourceType=Security
ResourceId=Cell=!{cellName}:Security=
避免故障: 可以多次使用相同名称创建一些资源,例如 JDBCProvider 和 ThreadPool。名称值是这些对象的关键属性。请勿在给定范围下创建同名的这些对象的多个实例。
gotcha
- 根据需要修改抽取的属性文件。
- 如果抽取的可移植属性文件指的是其他环境中不存在的服务器、节点、应用程序、集群或授权组类型的资源且在 GenerateTemplates 选项设置为 true 时运行 extractConfigProperties 命令,请编辑属性文件来启用对资源的创建。
GenerateTemplates 选项使您可以创建类似于现有服务器的另一服务器。例如,使用此选项抽取服务器属性时,抽取的属性文件包含用于创建另一服务器的模板。缺省情况下,将跳过模板部分。如果您设置 SKIP=false 然后设置必需属性来新建对象,那么在运行 applyConfigProperties 命令时产品新建对象并提供编辑的属性文件。因为以下部分包含现有服务器的配置属性且运行 applyConfigProperties 命令时处理了这些部分,所以新建的服务器具有与从其中抽取属性文件的旧服务器相同的配置。
您必须修改环境部分以反映通过更改 nodeName、cellName 和 serverName 变量创建的新服务器。
此选项在每个服务器、集群、应用程序和授权组部分前面生成模板属性部分。缺省情况下,禁用这些部分。
对于目标环境中不存在的每个对象,请编辑对应于该对象的部分。插入正确的属性值并除去 SKIP=true。在属性文件末尾设置反映新目标环境的特定于环境的变量。
- 请勿修改或删除用作键来标识对象的属性。
如果您修改或删除对象中的关键字属性,那么属性文件的后续部分不得再次引用该对象。将找不到后续部分中指定的资源。
例如,检查以下部分中的虚拟主机属性:
ResourceType=VirtualHost
ImplementingResourceType=VirtualHost
ResourceId=Cell=!{cellName}:VirtualHost=admin_host
#
#Properties
#
name=admin_host #required
#
# SubSection 1.0.1 # MimeTypes section
#
ResourceType=VirtualHost
ImplementingResourceType=VirtualHost
ResourceId=Cell=!{cellName}:VirtualHost=admin_host
AttributeInfo=mimeTypes(type,extensions)
如果 name=admin_host 更改为 name=my_host,具有 ResourceId==!{cellName}:VirtualHost=admin_host 的 MIME 类型部分将无法找到按资源标识指定的资源,因为此名称在先前部分中已更改。类似地,如果删除了 name=admin_host,那么“MIME 类型”部分将无法找到按资源标识指定的资源。
- 验证属性文件。
运行 validateConfigProperties 命令。
请参阅关于验证属性文件的主题。
- 将抽取的可移植属性文件复制到另一环境。
- 如果抽取的可移植属性文件指的是其他环境中不存在的服务器、节点、应用程序、集群或授权组类型的资源且在 GenerateTemplates 选项设置为 true 时没有运行 extractConfigProperties 命令,请在其他环境中创建该资源。
因为属性文件初始应用于其他环境,所以属性文件中的资源标识可能指的是目标环境中不存在的资源。如果目标环境中不存在服务器、节点、应用程序、集群或授权组类型的资源且在属性文件没有启用对资源的创建,请在目标环境中创建资源,然后应用该资源的属性。另外,一个属性可能引用另一资源。确保所有引用的资源都存在,如有必要,创建缺失的服务器、节点、应用程序、集群或授权组类型的资源。
- 使用 applyConfigProperties 命令在其他环境中应用抽取的可移植属性文件。
例如,要应用属性文件 server.props 并生成名为 rep.txt 的报告,请运行以下 wsadmin 命令:
AdminTask.applyConfigProperties('[-propertiesFileName server.props -reportFileName rep.txt]')
如果目标环境中存在属性文件中指定的资源且属性文件中指定的属性值与目标环境中已经设置的值相同,那么将跳过该属性,或者没有在目标环境中设置该属性。
产品只应用不同于属性文件中指定内容的属性。
如果属性文件中指定的资源没有存在于目标环境中,该产品新建资源并从属性文件中资源的值为新建资源设置所有属性。除非在 GenerateTemplates 选项设置为 true 时运行 extractConfigProperties 命令且属性文件指定了这些类型的一个或多个新资源,否则该产品不会创建服务器、节点、应用程序、集群或授权组类型的资源。
避免故障: 如果属性文件中某个资源的属性引用了另一个资源(它在目标环境中不存在),那么
applyConfigProperties 命令将不会创建所引用的资源。例如,在以下属性文件中,
coreGroupName
是
HAManagerService 资源的属性,并通过名称引用了核心组资源。如果目标环境中不存在名为
myCoreGroup 的核心组,那么使用
applyConfigProperties 命令应用此属性文件将不会创建该核心组资源。
#
# SubSection 1.0 # HAManagerService Section
#
ResourceType=HAManagerService
ImplementingResourceType=HAManagerService
ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:HAMana
gerService=
AttributeInfo=hamanagerservice
#
#
#Properties
#
isAlivePeriodSec=120 #integer,required,default(120)
transportBufferSize=10 #integer,required,default(1)
enable=true #boolean,default(false)
context=null
activateEnabled=true #boolean,default(false)
description=Template version of HAManager service.
coreGroupName=myCoreGroup
gotcha