IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

WebSphere Application Server V7 的系统管理,第 4 部分: 基于属性的配置

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

John Chang, 顾问软件工程师, IBM
Amy Lin, 软件工程师, IBM
Vishwanath Venkataramappa, 高级软件工程师, IBM
Syed-Muasir Khalil, 软件工程师, IBM

2009 年 6 月 10 日

Journal icon IBM® WebSphere® Application Server V7 引入了基于属性的配置,此新增功能可帮助您使用属性文件方便地管理和修改 WebSphere Application Server 配置。本文将阐述什么是基于属性文件的配置,以及如何使用该功能更方便地管理您的配置。

来自 IBM WebSphere Developer Technical Journal

引言

IBM WebSphere Application Server 配置主要由 XML 格式文件以及一些非 XML 格式文件组成。这些配置文件分布在 WebSphere Application Server 安装或配置树的多个目录中。这些文件的内容是以特定于 WebSphere 的格式构造的,目的是为了遵循基础配置模型。

可以使用许多管理工具(如 wsadmin 命令、管理控制台和公共 Java™ API)访问和操作这些配置对象。每种工具都提供独特的任务来修改配置的不同部分。例如,wsadmin 包含 AdminConfig、AdminTask、AdminApp 和 AdminControl 任务,用于查询和修改 WebSphere Application Server 配置中的不同对象。利用这些 wsadmin 功能以及其他可用的 wsadmin 功能通常要求管理员全面了解所有可用的任务。

WebSphere Application Server V7.0 引入了简单的基于属性文件的配置功能,可以将其用作单个常规工具来查询和修改 WebSphere Application Server 配置中的配置对象。使用此实用工具,可以检查配置并通过将配置元素提取到可读的属性文件中来更新配置,根据需要修改提取的属性文件,然后将修改应用回配置。归根结底,这意味着您现在只需知道一个命令集(而不是每个工具一组命令集),就能配置 WebSphere Application Server。

本文将提供一些示例来演示如何将 WebSphere Application Server 配置信息提取到简单的属性文件,如何修改提取的属性文件,最后,将演示如何将修改应用回 WebSphere Application Server 配置。





回页首


基于属性的配置

基于属性的配置能够将环境配置为与属性文件中指定的内容相匹配。属性文件通过从现有配置提取属性名称和值来创建。通过在文件中修改、添加或删除对象和属性可以配置环境,然后通过调用 apply 和 delete 命令将属性文件应用到配置中。

属性文件包含属性名称和属性值对的列表。可以使用此数据配置计算单元、节点、集群、服务器、应用程序或任何其他配置对象。不过,属性文件不是配置文件,因此,在使用基于属性文件的配置将此文件应用到配置之前,对此文件的修改不会影响系统的配置。

基于属性的配置可以在 WebSphere Application Server 配置存储库中的复杂数据,及包含相应配置信息的基于属性的简单文件格式之间提供双向转换。使用基于属性文件的配置能够:

  • 从配置存储库提取数据来创建属性文件。
  • 根据需要更新属性文件以操作配置。
  • 将属性文件中的更新数据应用到目标配置存储库。

可以将 WebSphere Application Server 配置提取到单个文件,并将任何配置属性以名称/值对属性的形式放入该文件中。而现有工具(如 wsadmin 或管理控制台)要求您调用特定的命令或导航多个面板才能获得所需的配置属性,此新增功能实用工具使您能够通过将其提取到一个属性文件来获得整个配置,甚至可以仅提取配置对象及其属性的一个实例。

使用基于属性的配置的两个主要优点是:

  • 将配置数据与 WebSphere Application Server 不同版本之间的基础配置和对象模型更改相分离。
  • 与分布在多个配置存储库的 XML 和其他格式的混合相比,管理人员使用属性文件更方便。

因此,该工具可以进行从属性文件配置数据到该版本的基础配置模型的正确转换,并提供在不同版本中使用同一配置数据的灵活性。也许更为重要的是,可以将配置的新增更改指定为属性文件的一部分并快速应用,而无需了解基础配置或对象模型。为了更易于使用,您可以使用一个命令(该命令可以应用属性文件中指定的配置属性)将工作配置快速地应用到另一个系统,而无需使用需要调用多个命令才能达到类似结果的其他工具,如 wsadmin。

基于属性的配置不是替代配置存档工具,而是对它们的补充。从配置提取的属性仅包含最常用的配置属性,而不包含整个配置。但是,配置存档包含一个精确的配置副本,并可以应用到另一个系统以实现精确复制。由于属性文件仅包含最常用的关键属性,因此在导入存档后,可以将此工具与配置存档结合使用以进行任何必要的配置更改。


图 1. 基于属性文件的配置
图 1. 基于属性文件的配置




回页首


基于属性文件的配置命令

基于属性文件的配置可实现为 AdminCommand 集,如下表所示。可以在 wsadmin 或 Java 客户端程序中使用这些命令。(在 WebSphere Application Server V7.0 中对基于属性的配置不提供任何管理控制台支持。)


表 1. extractConfigProperties
命令描述目标对象参数返回值
extractConfigProperties 以简单的属性文件的形式提取配置数据。如果未指定配置对象,则将整个配置文件的配置数据提取到属性文件。将所有特定于环境的值(cellName、serverName、nodeName、clusterName、coreGroup、nodeGroup、authorizationGroup 等)表示为变量。这些变量存储在生成的属性文件的末尾。配置对象的 Configld如果使用 configData 参数,则不需要它。
  • propertiesFileName(字符串,可选):属性文件的名称。这是一个必需参数。
  • configData(字符串,可选):表单中的配置对象实例 (Node=node1)。
  • filterMechanism(字符串,可选):有效值为 All(缺省)、NO_SUBTYPES 和 SELECTED_SUBTYPES。
  • selectedSubTypes(String[],可选):如果为 filterMechanism 选择 SELECTED_SUBTYPES,则应提供此参数。configData 参数下选择的配置对象中的 Subtypes(配置类型)。
使用配置属性填充的 propertiesFile
示例:

交互模式 (Jython):
AdminTask.extractConfigProperties ('[-interactive]')

批处理模式 (Jython):
AdminTask.extractConfigProperties('[‘-propertiesFileName’ ‘my.props’, ‘-configData’ ‘Node=node1’]')


表 2. applyConfigProperties
命令描述目标对象参数返回值
applyConfigProperties 将属性文件中指定的属性应用到配置。使用新值修改与属性文件中指定的每个属性对应的属性。如果配置中不存在与指定的属性对应的属性,则在配置中创建新属性。如果配置中不存在属性文件中指定的配置对象,则创建新的配置对象。
  • propertiesFileName(字符串,必需):属性文件的名称
  • variablesMapFile(字符串,可选):变量映射文件的名称。此文件应包含属性文件中使用的变量值。
  • variablesMap(属性,可选):为属性文件中使用的变量提供值的变量映射。
  • reportFile(字符串,可选):包含操作报告的报告文件。
  • reportFilterMechanism(字符串,可选):有效值为 All(缺省)、Errors 和 Errors_And_Changes。
  • Validate(Boolean,可选):其缺省值为 true。应用之前验证属性文件。
示例:

交互模式 (Jython):
AdminTask.applyConfigProperties ('[-interactive]')

批处理模式 (Jython):
AdminTask.applyConfigProperties('[‘-propertiesFileName’ ‘my.props’]')


表 3. validateConfigProperties
命令描述目标对象参数返回值
validateConfigProperties 验证属性文件中指定的属性。此命令将验证每个属性,以确保在配置上应用属性时不发生任何错误。还将验证语法并检查类型是否正确。将属性文件中的所有错误记录到指定的报告文件。还将记录以下信息:将创建哪些配置对象、将修改哪些配置对象等。
  • propertiesFileName(字符串,必需):属性文件的名称
  • variablesMapFile(字符串,可选):变量映射文件的名称。此文件应包含属性文件中使用的变量值。
  • variablesMap(属性,可选):为属性文件中使用的变量提供值的变量映射。
  • reportFile(字符串,必需):包含操作报告的报告文件。
  • reportFilterMechanism(字符串,可选):有效值为 All(缺省)、Errors 和 Errors_And_Changes。
示例:

交互模式 (Jython):
AdminTask.validateConfigProperties ('[-interactive]')

批处理模式 (Jython):
AdminTask.validateConfigProperties('[‘-propertiesFileName’ ‘my.props’ ‘-reportFile’ ‘report.ext’]')


表 4. deleteConfigProperties
命令描述目标对象参数返回值
deleteConfigProperties 从配置删除属性文件中指定的属性。移除属性文件中每个属性的属性。如果属性具有缺省值,则将属性值设置为缺省值。
  • propertiesFileName(字符串,必需):属性文件的名称
  • variablesMapFile(字符串,可选):变量映射文件的名称。此文件应包含属性文件中使用的变量值。
  • variablesMap(属性,可选):为属性文件中使用的变量提供值的变量映射。
  • reportFile(字符串,可选):包含操作报告的报告文件。
  • reportFilterMechanism(字符串,可选):有效值为 All(缺省)、Errors 和 Errors_And_Changes。
  • Validate(Boolean,可选):其缺省值为 true。删除之前验证属性文件。
示例:

交互模式 (Jython):
AdminTask.deleteConfigProperties ('[-interactive]')

批处理模式 (Jython):
AdminTask.deleteConfigProperties('[‘-propertiesFileName’ ‘my.props’]')


表 5. createPropertiesFileTemplates
命令描述目标对象参数返回值
createPropertiesFileTemplates 创建可用于创建或删除指定对象类型的实例的模板属性文件。
  • propertiesFileName(字符串,必需):属性文件的名称
  • configType(字符串,必需):需要为其创建模板文件的资源类型
示例:

交互模式 (Jython):
AdminTask. createPropertiesFileTemplates ('[-interactive]')

批处理模式 (Jython):
AdminTask. createPropertiesFileTemplates (‘[‘-propertiesFileName’ ‘serverTemplate.props’ ‘-configType’ ‘Server’]')





回页首


属性文件剖析

由于属性文件可包含多个配置对象的属性,并且每个配置对象可包含多个属性,因此将属性文件划分为多个部分。每个部分包含一个配置对象的属性。每个部分包含一个部分标题,后跟名称/值属性对。部分标题标识配置对象,属性部分包含配置对象的属性。

清单 1 显示了属性文件的示例,该文件显示了对象的标题和属性。


清单 1. 显示属性文件的示例
				
#
# Section 1.0 ## cells/myCell|cell.xml#Cell_1
#

#
# SubSection 1.0 # Cell level attributes (Header)
#
ResourceType=Cell
ImplementingResourceType=Cell
ResourceId=Cell=!{cellName}
#

#
#Properties section
#
cellType=DISTRIBUTED
name=!{cellName}
...

EnvironmentVariablesSection
#
#Environment Variables
#
cellName=MyCell

属性文件标题包含:

  • ResourceType,表示资源的类型。
  • ResourceId,是唯一地标识资源或配置对象的名称。仅当需要将同一属性应用到同一类型的其他对象时才对它进行修改。
  • ImplementingResourceType,表示实现属性到属性转换的类。

标题中的信息是自动生成的,只会修改 ResourceId。显示此信息,以便基于属性文件的配置工具知道使用哪些实现来调用和应用属性。

属性部分包含标题以名称/值对形式标识的配置对象的属性。每个名称和值都与配置对象的属性对应。

环境变量部分包含属性文件中使用的变量值。将特定于环境的属性(如 cellName、serverName、nodeName 等)表示为变量,并将这些变量的当前值放置在属性文件的末尾。

可以将多个参数和规则应用到属性文件来操作配置。下面是一些最常见和最重要的参数和规则:

  • 复杂属性

    正如前面描述的,属性文件包含多个部分。每个部分包含一个标识配置对象的部分标题,后跟属性。在大多数情况下,部分中的属性与配置对象的属性对应。不过,在其他情况下,可以将多个属性合并来形成单个属性,以减少生成的属性文件的大小。将多个属性合并以形成单个属性时,可使用标题中的 AttributeInfo 来描述合并多个属性的方式。清单 2 显示了如何将多个属性合并为单个属性的示例。



    清单 2. 将多个属性合并为单个属性
    						
    #
    # Section 1.0.0 ## cells/myCell|virtualhosts.xml#VirtualHost_1
    #
    
    #
    # SubSection 1.0 # Virtual Hosts
    #
    ResourceType=VirtualHost
    ImplementingResourceType=VirtualHost
    ResourceId=Cell=myCell:VirtualHost=ID#VirtualHost_1
    #
    
    #
    #Properties
    #
    name=default_host
    ...
    #
    # SubSection 1.2 # HostAlias section
    #
    ResourceType=VirtualHost
    ImplementingResourceType=VirtualHost
    ResourceId==myCell:VirtualHost=ID#VirtualHost_1
    AttributeInfo=aliases(port,hostname)
    #
    
    #
    #Properties
    #
    9472=*
    9443=*
    9468=*
    9096=*
    80=*
    ...

    标题部分中的 AttributeInfoin 包含将每个 HostAlias 映射到单个属性必需的信息 (port=hostname)。您无需了解系统如何在内部处理 AttributeInfo 以便将这些属性映射到配置属性,但是需要重点注意的是,一定不要从标题中删除该信息。要添加新的别名,只需在列表的末尾添加一个新条目;当应用属性文件时,将创建新的主机别名。

  • 值列表

    在 { } 符号中指定作为值列表的属性值。作为列表的 classpath 属性的表示形式如清单 3 所示。将空列表指定为 {}。



    清单 3.列表的 classpath 属性表示形式
    						
    #
    # SubSection 1.0 # JDBCProvider attributes
    #
    ResourceType=JDBCProvider
    ImplementingResourceType=JDBCProvider
    ResourceId=Cell=myCell:JDBCProvider=ID#builtin_jdbcprovider
    #
    
    #
    #Properties
    #
    classpath={${DERBY_JDBC_DRIVER_PATH}/derby.jar,/my.jar}
    implementationClassName=org.apache.derby.jdbc.EmbeddedXADataSource
    name=Derby JDBC Provider (XA)
    nativepath={}
    description=Built-in Derby JDBC Provider (XA)
    providerType=Derby JDBC Provider (XA)
    xa=true #boolean

  • 未设置值(空值)

    如果在配置中未设置属性的值,则该属性值将表示为空值(清单 4)。



    清单 4. 属性为空值的设置
    						
    #
    # SubSection 1.0 # ServerCluster attributes
    #
    ResourceType=ServerCluster
    ImplementingResourceType=ServerCluster
    ResourceId=Cell=myCell:Cluster=MMc1
    #
    
    #
    #Properties
    #
    name=MMc1
    preferLocal=true #boolean
    nodeGroupName=null
    stateManagement=null
    enableHA=false #boolean
    uniqueId=null
    serverType=APPLICATION_SERVER #ENUM
    shortName=null
    description=null
    statisticsProvider=null
    					

  • 属性的类型

    属性的类型(int、long、float 等)的表示形式如清单 5 所示。如果未提及类型,则其缺省值为字符串。



    清单 5. 属性的类型的表示形式
    						
    #
    # SubSection 1.0.2.0.2 # Monitoring Policy Section
    #
    ResourceType=MonitoringPolicy
    ImplementingResourceType=Server
    ResourceId=Cell=myCell:Node=myNode:Server=server1:
    	MonitoringPolicy=ID#MonitoringPolicy_1
    AttributeInfo=monitoringPolicy
    #
    
    #
    #Properties
    #
    maximumStartupAttempts=3 #integer
    pingTimeout=300 #integer
    pingInterval=60 #integer
    autoRestart=true #boolean
    nodeRestartState=STOPPED #ENUM
    					

  • 创建新对象所需的属性

    如果给定的对象需要属性,则其表示形式如清单 6 所示。此属性应存在于创建新对象所使用的属性文件中。



    清单 6. 为给定的对象设置属性
    						
    #
    # Create parameters
    # These parameters should be set to create a new instance of the following type 
    # of object.
    # Replace the line `CreateTemplate=true` with 'CreateDeleteCommandProperties=true'
    # and set actual values for the following properties to create a new object.
    #
    ResourceType=Server
    ImplementingResourceType=Server
    ResourceId=Server=
    CreateTemplate=true
    #
    
    #
    #Properties
    #
    name=name #String,required
    templateLocation=null #javax.management.ObjectName
    genUniquePorts=null #Boolean
    commandName=createApplicationServer
    specificShortName=null #String
    clusterName=null #String
    targetObject=targetObject #ObjectName,required
    templateName=null #String
    genericShortName=null #String

  • Readonly 属性

    Readonly 属性是不能更改的。在清单 7 中,taskName、mutables 和 row0 属性都是不可改变的。所有其他属性(行)都可以修改。



    清单 7. Readonly 属性
    						
    #
    # SubSection 1.1 # MapModulesToServers Section. taskName,mutables and row0 should 
    # not be edited.
    #
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Cell=myCell:Application=ivtApp
    #
    
    #
    #Properties
    #
    taskName=MapModulesToServers #readonly
    mutables={false false true false false false} #readonly
    row0={module uri server ModuleVersion moduletype moduletypeDisplay} #readonly
    row2={"IVT Application" ivt_app.war,WEB-INF/web.xml WebSphere:cell=myCell:
    	node=myNode,server=server1 12 moduletype.web "Web Module"}
    row1={"IVT EJB Module" ivtEJB.jar,META-INF/ejb-jar.xml WebSphere:cell=myCell,
    	node=myNode,server=server1 12 moduletype.ejb "EJB Module"}

  • 指向另一个对象的属性值引用

    如果属性值包含指向另一个对象的引用,则将该对象的显示名称设置为它的值(清单 8)。如果被引用的对象没有显示名称,则将完整的 configId 设置为其值。



    清单 8. 对象之间属性值的引用
    						
    #
    # SubSection 1.0.1.2 # TCP Inbound Transport Channels
    #
    ResourceType=TCPInboundChannel
    ImplementingResourceType=Server
    ResourceId=Cell=myCell:Node=myNode:Server=serve
    r1:TCPInboundChannel=ID#TCPInboundChannel_1
    #
    
    #
    #Properties
    #
    maxOpenConnections=20000 #integer
    name=TCP_3
    hostNameIncludeList={}
    hostNameExcludeList={}
    endPointName=WC_adminhost_secure
    inactivityTimeout=60 #integer
    discriminationWeight=0 #integer
    ddressIncludeList={}
    addressExcludeList={}
    threadPool=WebContainer #ObjectName(ThreadPool)
    					

  • 包含空格或其他特殊字符的属性值

    包含空格或其他特殊字符的属性值用“ ”括起来(清单 9)。



    清单 9. 空格或其他特殊字符的属性值设置
    						
    #
    # SubSection 1.1 # TimerManagerInfo section
    #
    ResourceType=TimerManagerInfo
    ImplementingResourceType=TimerManagerProvider
    ResourceId=Cell=myCell:Cluster=MMc1:TimerManagerInfo=ID#TimerMana
    gerInfo_Default
    #
    
    #
    #Properties
    #
    name=DefaultTimerManager
    referenceable=null
    category=null
    defTranClass=null
    providerType=null
    numAlarmThreads=2 #integer
    jndiName="tm/default"
    serviceNames={}
    provider=TimerManagerProvider #ObjectName(TimerManagerProvider)
    description=WebSphere Default TimerManager

  • 特殊属性

    可以将下面的特殊属性添加到属性文件,以指示在将属性文件应用到配置时是跳过还是处理给定的部分:

    • SKIP

      可以将每个部分的 SKIP 属性设置为 true 或 false。此属性只能由 applyConfigProperties 和 deleteConfigProperties 命令使用。缺省值为 false。当此属性在某一部分中存在并设置为 true 时,则跳过该部分。

      当使用 applyConfigProperties 命令处理某一部分时,如果与该部分对应的配置对象丢失,则系统会自动创建它。当使用 deleteConfigProperties 命令处理某一部分时,如果与该部分对应的配置数据丢失,则系统不会采取任何操作。

      示例:SKIP=true

    • SKIPSUBSECTIONS

      当此属性在某一部分中存在并设置为 true 时,将跳过所有子部分。缺省值为 false。通过遍历该部分(包含此变量参数)中包含的所有部分来确定子部分。

      示例:SKIPSUBSECTIONS=true

    • DELETE

      当此属性在某一部分中存在设置为 true 时,该部分将从配置中完全删除。与该部分对应的配置对象也将被删除。

      示例:DELETE=true





回页首


用例

现在您已大致了解了属性文件的用途以及使用方式,下面是一些具体示例,这些示例将演示如何使用基于属性文件的配置实用工具:

提取配置属性

可以使用 ExtractConfigProperties 命令以属性的形式从系统中提取配置数据。使用此命令可以提取整个计算单元的配置或仅提取配置的一部分。

  • 示例 1:提取整个计算单元配置

    使用以下命令可提取整个计算单元的配置。提取的文件类似于清单 10。

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName cell.props ]')



    清单 10. 使用命令提取整个计算单元的配置
    						
    # Cell.props
    
    #
    # SubSection 1.0 # Cell level attributes
    #
    ResourceType=Cell
    ImplementingResourceType=Cell
    ResourceId=Cell=!{cellName}
    #
    
    #
    #Properties
    #
    shortName=null
    cellType=DISTRIBUTED #ENUM(UDP|TCP|MULTICAST|DISTRIBUTED|STANDALONE),readonly
    name=!{cellName}
    multicastDiscoveryAddressEndpointName=null
    discoveryAddressEndpointName=null
    cellDiscoveryProtocol=TCP #ENUM(UDP|TCP|MULTICAST)
    
    ...
    ...  Properties of nodes,servers, clusters, applications, etc.
    ... 
    
    
    EnvironmentVariablesSection
    #
    #
    #Environment Variables
    #Thu Apr 17 05:38:01 CDT 2008
    cellName=MyCell

    请注意 !{cellName} 变量。属性文件不会有实际的 cellName、nodeName、serverName、clusterName、applicationName、coreGroup 或 nodeGroup 值。而是将这些值表示为变量。文件底部的 EnvironmentVariables 部分包含属性文件中使用的所有变量。

  • 示例 2:提取服务器配置

    使用下面的命令可提取服务器配置。提取的文件类似于清单 11。

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName server.props -configData Server=dmgr ]')



    清单 11. 使用命令提取服务器配置
    						
    #
    # SubSection 1.0 # Server Section
    #
    ResourceType=Server
    ImplementingResourceType=Server
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}
    #
    
    #
    #Properties
    #
    shortName=null
    serverType=DEPLOYMENT_MANAGER #readonly
    developmentMode=false #boolean
    parallelStartEnabled=true #boolean
    name=!{serverName}
    clusterName=null
    uniqueId=null
    modelId=null
    
    …
    … Properties of other inner objects ( EJBContainer, WebContainer, ORB etc) 
    …  and  subtypes not shown.
    …
    
    EnvironmentVariablesSection
    #
    #Environment Variables
    #
    cellName=MyCell
    nodeName=MyNodeManager
    hostName=MyHost
    serverName=dmgr

  • 示例 3: 提取服务器的 EJBContainer 和 WebContainer 属性

    可以使用下面的命令仅提取服务器的 EJBContainer 属性:

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName ejbcontainer.props -configData Server=dmgr -filterMechanism SELECTED_SUBTYPES -selectedSubTypes [EJBContainer ] ]')

    可以使用下面的命令提取 EJBContainer 和 WebContainer 属性:

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName container.props -filterMechanism SELECTED_SUBTYPES –selectedSubTypes [EJBContainer WebContainer ] ]')

    提取的属性文件将仅包含 EJBContainer 和 WebContainer 的属性,如清单 12 所示。



    清单 12. 提取相关属性文件中的属性
    						
    #
    # SubSection 1.0 # EJBContainer
    #
    ResourceType=EJBContainer
    ImplementingResourceType=EJBContainer
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:
    ApplicationServer=ID#ApplicationServer_1:EJBContainer=ID#EJBContainer_1
    AttributeInfo=components
    #
    
    #
    #Properties
    #
    EJBTimer={} #ObjectName*(null)
    name=null
    defaultDatasourceJNDIName=null
    inactivePoolCleanupInterval=30000 #long
    passivationDirectory="${USER_INSTALL_ROOT}/temp"
    enableSFSBFailover=false #boolean
    server=null
    parentComponent=Network Deployment Server
    
    #
    # SubSection 1.0 # WebContainer 
    #
    ResourceType=WebContainer
    ImplementingResourceType=WebContainer
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:
    ApplicationServer=ID#ApplicationServer_1:WebContainer=ID#WebContainer_1
    AttributeInfo=components
    #
    
    #
    #Properties
    #
    enableServletCaching=false #boolean
    name=null
    defaultVirtualHostName=null
    server=null
    maximumPercentageExpiredEntries=15 #integer
    asyncIncludeTimeout=60000 #integer
    parentComponent=Network Deployment Server
    disablePooling=false #boolean
    sessionAffinityFailoverServer=null
    maximumResponseStoreSize=100 #integer
    allowAsyncRequestDispatching=false #boolean
    sessionAffinityTimeout=0 #integer
    	
    EnvironmentVariablesSection
    #
    #Environment Variables
    #
    cellName=MyCell
    nodeName=MyCellManager
    hostName=MyHost
    serverName=dmgr

    请注意 ResourceId 行中的 EJBContainer=ID#EJBContainer_1 语句。它唯一地表示服务器中的 EJBContainer 对象。由于此案例中的名称字段为空,因此您必须使用 xmi ID 才能表示此对象。而且,xmi ID 是在配置中唯一地标识对象的唯一方法,因为在大多数情况下可以使用同一名称创建多个对象。不过,将属性文件应用到配置之前,如果配置中的名称字段被设置为 myContainer,则可以将此字段修改为 EJBContainer=myContainer。

  • 示例 4:提取节点属性,而无需遍历节点的内容(子类型)

    下面的命令可以提取节点的属性,而无需提取其子类型的属性(如服务器和资源)。产生的属性文件将类似于清单 13,其中没有任何子类型信息。

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName node.props -configData Node=MyCellManager -filterMechanism NO_SUBTYPES]')



    清单 13. 提取节点属性
    						
    #
    # SubSection 1.0 # Node Section
    #
    ResourceType=Node
    ImplementingResourceType=Node
    ResourceId=Cell=!{cellName}:Node=!{nodeName}
    #
    
    #
    #Properties
    #
    shortName=null
    name=!{nodeName}
    maxFilePermissionForApps=".*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755
    "
    discoveryProtocol=TCP #ENUM(UDP|TCP|MULTICAST)
    hostName=!{hostName}
    
    #
    ## Section 1.0_1#Cell=!{cellName}:Node=!{nodeName}
    #
    ResourceType=Node
    ImplementingResourceType=Node
    ExtensionId=NodeMetadataExtension
    ResourceId=Cell=!{cellName}:Node=!{nodeName}
    
    #
    nodeOS=distributed
    nodeVersion=7.0.0.0
    
    #
    # End of Section 1.0# Cell=!{cellName}:Node=!{nodeName}
    #
    
    EnvironmentVariablesSection
    #
    #Environment Variables
    #Thu Apr 17 14:27:01 CDT 2008
    cellName=MyCell
    nodeName=MyCellManager

  • 示例 5:提取节点属性,而无需遍历该节点的内容(子类型)和调用任何扩展

    可以使用下面的命令提取节点属性,而无需包括扩展的属性。清单 14 是执行此命令的结果。请注意,NodeMetadataExtension 部分不见了,因为该部分是对节点资源的扩展。

    wsadmin> AdminTask.extractConfigProperties('[-propertiesFileName node.props -configData Node=MyCellManager -filterMechanism NO_SUBTYPES_AND_EXTENSIONS]')



    清单 14. 执行提取节点属性命令的结果
    						
    #
    # SubSection 1.0 # Node Section
    #
    ResourceType=Node
    ImplementingResourceType=Node
    ResourceId=Cell=!{cellName}:Node=!{nodeName}
    #
    
    #
    #Properties
    #
    shortName=null
    name=!{nodeName}
    maxFilePermissionForApps=".*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755
    "
    discoveryProtocol=TCP #ENUM(UDP|TCP|MULTICAST)
    hostName=!{hostName}
    
    
    #
    # End of Section 1.0_1# Cell=!{cellName}:Node=!{nodeName}
    #
    
    EnvironmentVariablesSection
    #
    #Environment Variables
    #
    cellName=MyCell
    nodeName=MyCellManager

修改提取的属性文件并将其应用回配置

提取配置文件后,可以使用任何文本编辑器修改一个或多个属性值,然后使用 applyConfigProperties 命令将其应用回该配置。

  • 示例 1:修改一个或多个属性,并将属性文件应用到配置

    在本例中,将属性文件中的 EJBContainer 的 enableSFSBFailover 属性从 false 更改为 true。



    清单 15. 修改相关属性
    						
    #
    # File : ejbcontainer.props
    #
    # SubSection 1.0 # EJBContainer
    #
    ResourceType=EJBContainer
    ImplementingResourceType=EJBContainer
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:
    ApplicationServer=ID#ApplicationServer_1:EJBContainer=ID#EJBContainer_1
    AttributeInfo=components
    #
    
    #
    #Properties
    #
    EJBTimer={} #ObjectName*(null)
    name=null
    defaultDatasourceJNDIName=null
    inactivePoolCleanupInterval=30000 #long
    passivationDirectory="${USER_INSTALL_ROOT}/temp"
    enableSFSBFailover=true #boolean
    server=null
    parentComponent=Network Deployment Server
    
    EnvironmentVariablesSection
    #
    #Environment Variables
    #
    hostName2=*
    hostName1=localhost
    cellName=MyCell
    nodeName=MyCellManager
    hostName=MyHost
    serverName=dmgr
    enableSSB=true

    修改属性文件后,可以运行此命令以将属性应用到系统。然后可以再次提取属性来验证这些更改。

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props ]')

  • 示例 2:使用其他用户定义的变量

    在本例中,通过使用变量 !{enableSSB} 的值来修改同一属性 (enableSFSBFailover)。在部分标题中或该部分的属性区域中可以使用该变量。另外,属性值可以由多个变量组成,如 ResourceId 所示。在清单 16 中,应修改 EnvironmentVariableSection 以包括使用的任何新变量。



    清单 16. 使用其他用户定义的变量
    						
    #
    # File : ejbcontainer.props
    #
    # SubSection 1.0 # EJBContainer
    #
    ResourceType=EJBContainer
    ImplementingResourceType=EJBContainer
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:
    ApplicationServer=ID#ApplicationServer_1:EJBContainer=ID#EJBContainer_1
    AttributeInfo=components
    #
    
    #
    #Properties
    #
    EJBTimer={} #ObjectName*(null)
    name=null
    defaultDatasourceJNDIName=null
    inactivePoolCleanupInterval=30000 #long
    passivationDirectory="${USER_INSTALL_ROOT}/temp"
    enableSFSBFailover=!{enableSSB} #boolean
    server=null
    parentComponent=Network Deployment Server
    
    EnvironmentVariablesSection
    #
    #
    #Environment Variables
    #
    hostName2=*
    hostName1=localhost
    ellName=MyCell
    nodeName=MyCellManager
    hostName=MyHost
    serverName=dmgr
    enableSSB=true
    					

    更改属性文件后,可以使用同一命令应用属性文件。

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props ]')

  • 示例 3:使用其他 variableMap 文件,而不是属性文件中的该文件

    在本例(清单 17)中,所有变量都被放入不同的文件中(清单 18)。



    清单 17. 使用其他 variableMap 文件
    						
    # File : ejbcontainer.props
    #
    # SubSection 1.0 # EJBContainer
    #
    ResourceType=EJBContainer
    ImplementingResourceType=EJBContainer
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:
    ApplicationServer=ID#ApplicationServer_1:EJBContainer=ID#EJBContainer_1
    AttributeInfo=components
    #
    
    #
    #Properties
    #
    EJBTimer={} #ObjectName*(null)
    name=null
    defaultDatasourceJNDIName=null
    inactivePoolCleanupInterval=30000 #long
    passivationDirectory="${USER_INSTALL_ROOT}/temp"
    enableSFSBFailover=!{enableSSB} #boolean
    server=null
    parentComponent=Network Deployment Server



    清单 18. 所有变量都被放入不同的文件中
    						
    #File : ejbprops.vars:
    
    #
    #
    #Environment Variables
    #
    hostName2=*
    hostName1=localhost
    cellName=MyCell
    nodeName=MyCellManager
    hostName=MyHost
    serverName=dmgr
    enableSSB=true
    					

    现在可以使用此命令应用使用其他变量映射文件的属性文件:

    wsadmin>AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars ]')

验证属性文件

将文件应用到配置之前,应验证使用文本编辑器修改的属性文件。为此操作提供了单独的命令。不过,applyConfigProperties 命令将属性应用到配置之前,还以缺省方式执行验证。如果已验证属性文件,那么通过在 applyConfigProperties 命令中选择一个选项可以禁用在应用过程中进行的验证。

  • 示例 1:验证属性文件

    在缺省情况下,应用属性文件时,应对整个属性文件执行验证。不过,您可以使用下面的命令单独验证属性文件。该命令将生成类似于清单 19 的报告文件。

    wsadmin> AdminTask.validateConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars -reportFileName report.txt ]')



    清单 19. 报告文件
    						
    ADMG0820I: Start applying properties from file ejbcontainer.props
    ADMG0818I: Processing section EJBContainer:ApplicationServer.
    ADMG0810I: Not changing value for this property EJBTimer. New value specified 
    is same as current value {}.
    ADMG0810I: Not changing value for this property defaultDatasourceJNDIName. New 
    value specified is same as current value null.
    ADMG0811I: Changing value for this property enableSFSBFailover. New value specified 
    is true. Old value was false.
    ADMG0810I: Not changing value for this property inactivePoolCleanupInterval. New 
    value specified is same as current value 30000.
    ADMG0810I: Not changing value for this property name. New value specified is same 
    as current value null.
    ADMG0807I: Property parentComponent is readonly. Will not be modified
    ADMG0810I: Not changing value for this property passivationDirectory.
     New value specified is same as current value ${USER_INSTALL_ROOT}/temp.
    ADMG0807I: Property server is readonly. Will not be modified
    ADMG0819I: End Processing section EJBContainer:ApplicationServer.

    清单 19 中显示的报告文件非常详细。该文件报告了以下内容:

    • 对属性值的任何更改(配置中的值与属性文件中的值不同)。
    • 未更改的属性值(配置中的值与属性文件中的值相同)。
    • 无法更改的只读类型的属性。
    • 其他错误。

    要使生成的报告文件变得更简洁,可以指定 reportFilterMechanism 参数来报告:

    • 仅报告错误
    • 错误和对配置的任何更改
    • 全部。

    例如,可以使用下面的命令仅报告错误和更改。生成的报告文件仅包含清单 20 中所示的信息(本案例中有一条错误和一个配置更改)。

    wsadmin> AdminTask.validateConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars -reportFileName report.txt -reportFilterMechanism Errors_And_Changes ]')



    清单 20. 生成的错误报告和配置更改信息
    						
    ADMG0820I: Start applying properties from file ejbcontainer.props
    ADMG0811I: Changing value for this property enableSFSBFailover. New value 
    specified is true. Old value was false. 
    ADMG0831I: Value specified for property inactivePoolCleanupInterval is not 
    a valid type. Specified value asdf, Required type long.
    ADMG0821I: End applying properties from file ejbcontainer.props.

    清单 20 包含一条有关对配置进行更改的消息,以及另一条有关为属性指定了无效值的消息。它包含一个配置更改和一条错误。

  • 示例 2:在应用过程中验证属性文件

    在缺省情况下,应用属性文件时,将对整个属性文件执行验证。如果属性文件中存在任何问题,则对配置不进行任何更改。如果属性文件中没有任何问题,则按计划应用属性文件。如果在应用之前已验证属性文件,则可以将验证参数设置为 false,如下所示:

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars -validate false]')

  • 示例 3:在应用过程中生成报告

    通过指定报告文件名参数可以将应用属性文件时造成的所有配置更改都记录在报告文件中,如下所示。生成的报告文件类似于清单 21。

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars –reportFileName report.txt ]')



    清单 21. 在应用过程中生成报告
    						
    ADMG0820I: Start applying properties from file ejbcontainer.props
    ADMG0818I: Processing section EJBContainer:ApplicationServer.
    ADMG0810I: Not changing value for this property EJBTimer. New value specified is
    same as current value {}.
    ADMG0810I: Not changing value for this property defaultDatasourceJNDIName. New 
    value specified is same as current value null.
    ADMG0811I: Changing value for this property enableSFSBFailover. New value specified
    is true. Old value was false.
    ADMG0810I: Not changing value for this property inactivePoolCleanupInterval. New
    value specified is same as current value 30000.
    ADMG0810I: Not changing value for this property name. New value specified is same
    as current value null.
    ADMG0807I: Property parentComponent is readonly. Will not be modified
    ADMG0810I: Not changing value for this property passivationDirectory.
     New value specified is same as current value ${USER_INSTALL_ROOT}/temp.
    ADMG0807I: Property server is readonly. Will not be modified
    ADMG0819I: End Processing section EJBContainer:ApplicationServer.

    与清单 19 一样,清单 21 中显示的报告文件也非常详细。您可以指定 reportFilterMechanism 参数,使生成的报告更简洁。例如,您可以使用此命令仅报告错误和更改,生成的报告将类似于清单 22。

    wsadmin>AdminTask.applyConfigProperties('[-propertiesFileName ejbcontainer.props -variablesMapFileName ejbprops.vars –reportFileName report.txt -reportFilterMechanism Errors_And_Changes ]')



    清单 22. 生成的错误和更改报告
    						
    ADMG0820I: Start applying properties from file ejbcontainer.props
    ADMG0811I: Changing value for this property enableSFSBFailover. New value 
    specified is true. Old value was false. 
    ADMG0831I: Value specified for property inactivePoolCleanupInterval is not a valid 
    type. Specified value asdf, Required type long.
    ADMG0821I: End applying properties from file ejbcontainer.props.

    清单 22 包含一条有关对配置进行更改的消息,以及另一条有关为属性指定了无效值的消息。它包含一个配置更改和一条错误。

创建新对象

要创建服务器、集群、应用程序和 authorizationgroup 等类型的对象,应首先使用 createPropertiesFileTemplates 命令创建属性文件模板。您应修改此模板属性文件(如生成文件的注释部分中描述的),然后使用 applyConfigProperties 命令创建新对象。例如,您可以按照以下三个步骤创建新的 AuthorizationGroup:

  1. 生成属性文件模板

    请使用下面的命令创建稍后用来创建新对象的属性文件模板。此命令将创建清单 23 所示的模板文件。

    wsadmin>AdminTask.createPropertiesFileTemplates('[-propertiesFileName ag.template -configType AuthorizationGroup ]')



    清单 23. 生成属性文件模板
    						
    #
    # Create parameters
    # Replace the line `SKIP=true` with 'SKIP=false' under each section that is needed
    # Set necessary parameters under each command or step sections
    # Invoke applyConfigProperties command using this properties file.
    #
    ResourceType=AuthorizationGroup
    ImplementingResourceType=AuthorizationGroup
    ResourceId=AuthorizationGroup=
    SKIP=true
    CreateDeleteCommandProperties=true
    #
    
    #
    #Properties
    #
    authorizationGroupName=authorizationGroupName #String,required
    commandName=createAuthorizationGroup

  2. 修改生成的模板文件

    通过设置所需的参数(至少)并将 SKIP=true 更改为 SKIP=false 来修改生成的文件(清单 23)。修改的文件应该类似于清单 24。



    清单 24. 修改生成的模板文件
    						
    #
    # Create parameters
    # Replace the line `SKIP=true` with 'SKIP=false' under each section that is needed
    # Set necessary parameters under each command or step sections
    # Invoke applyConfigProperties command using this properties file.
    #
    ResourceType=AuthorizationGroup
    ImplementingResourceType=AuthorizationGroup
    ResourceId=AuthorizationGroup=
    SKIP=false
    CreateDeleteCommandProperties=true
    #
    
    #
    #Properties
    #
    authorizationGroupName=ag1 #String,required
    commandName=createAuthorizationGroup

  3. 使用修改的模板文件应用配置

    使用 applyConfigProperties 命令创建新的权限组对象。这将创建新的权限组 (ag1)。

    AdminTask.applyConfigProperties('[-propertiesFileName ag.template ]')

删除现有对象

要删除服务器、集群、应用程序或 authorizationgroup 等类型的对象,应首先使用 createPropertiesFileTemplates 命令创建属性文件模板。修改此模板属性文件(如生成文件的注释部分中描述),然后使用 deleteConfigProperties 命令删除现有对象。例如,要删除现有 AuthorizationGroup,请执行以下操作:

  1. 生成属性文件模板

    请使用下面的命令创建属性文件模板,以供稍后创建新对象使用。此命令将创建清单 25 所示的模板文件。

    wsadmin>AdminTask.createPropertiesFileTemplates('[-propertiesFileName ag.template -configType AuthorizationGroup ]')



    清单 25. 生成属性文件模板
    						
    #
    # Delete parameters
    # Replace the line `SKIP=true` with 'SKIP=false' under each section that is needed
    # Set necessary parameters under each command or step sections
    # Invoke deleteConfigProperties command using this properties file.
    #
    ResourceType=AuthorizationGroup
    ImplementingResourceType=AuthorizationGroup
    ResourceId=AuthorizationGroup=
    SKIP=true
    CreateDeleteCommandProperties=true
    #
    
    #
    #Properties
    #
    authorizationGroupName=authorizationGroupName #String,required
    commandName=deleteAuthorizationGroup

  2. 修改生成的模板文件

    通过设置所需的参数(至少)并将 SKIP=true 更改为 SKIP=false 来修改生成的文件。修改的文件应该类似于清单 26。



    清单 26. 修改生成的模板文件
    						
    #
    # Delete parameters
    # Replace the line `SKIP=true` with 'SKIP=false' under each section that is needed
    # Set necessary parameters under each command or step sections
    # Invoke deleteConfigProperties command using this properties file.
    #
    ResourceType=AuthorizationGroup
    ImplementingResourceType=AuthorizationGroup
    ResourceId=AuthorizationGroup=
    SKIP=false
    CreateDeleteCommandProperties=true
    #
    
    #
    #Properties
    #
    authorizationGroupName=ag1 #String,required
    commandName=deleteAuthorizationGroup

  3. 使用修改的模板文件删除配置

    请使用 deleteConfigProperties 命令删除现有权限组对象。此命令将删除权限组 (ag1):

    AdminTask.deleteConfigProperties('[-propertiesFileName ag.template ]')

创建和删除对象

如前所述,要创建服务器、集群、应用程序或权限组类型的对象,请使用模板属性文件。不过,通过修改提取的属性文件和 ResourceId 字段可以创建其他大多数类型的对象,这样,配置中不会存在该 ResourceId 表示的资源。当使用包含非现有资源 ID 的属性文件调用 applyConfigProperties 命令时,该命令将尝试创建新的对象。

  • 示例 1:使用属性文件创建新的 ThreadPool(使用不在配置中的 ID)

    假设清单 27 是提取的属性文件中的一部分。在这里,配置中已存在该对象。



    清单 27. 使用属性文件创建新的 ThreadPool
    						
    #
    # SubSection 1.0.1.4 # Thread pools
    #
    ResourceType=ThreadPool
    ImplementingResourceType=Server
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:Thr
    eadPoolManager=ID#ThreadPoolManager_1:ThreadPool=ID#builtin_ThreadPool_4
    #
    
    #
    #Properties
    #
    maximumSize=20 #integer
    name=Default
    inactivityTimeout=5000 #integer
    minimumSize=5 #integer
    isGrowable=false #boolean

    您可以修改 ResourceId,这样该 ResourceId 表示的线程池不会存在。在清单 28 中,配置中不存在此线程池 ThreadPool_9999 ID。



    清单 28. 修改 ResourceId
    						
    #
    # SubSection 1.0.1.4 # Thread pools
    #
    ResourceType=ThreadPool
    ImplementingResourceType=Server
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:Thr
    eadPoolManager=ID#ThreadPoolManager_1:ThreadPool=ThreadPool_99999
    #
    
    #
    #Properties
    #
    maximumSize=20 #integer
    name=myThreadPool
    inactivityTimeout=5000 #integer
    minimumSize=5 #integer
    isGrowable=false #boolean

    现在,如果使用此属性文件调用 applyConfigProperties 命令,则会创建新的 ThreadPool:

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName thp.props ]')

  • 示例 2:使用属性文件创建新的 ThreadPool(使用不在配置中的线程池名称)

    与使用配置中没有的随机 ID 不同,如果该对象具有名称属性,并且指定的名称还未存在于配置中,则还可以指定对象的名称。清单 29 显示了使用名称而非 ID 的属性文件。



    清单 29. 显示了使用名称而非 ID 的属性文件
    						
    #
    # SubSection 1.0.1.4 # Thread pools
    #
    ResourceType=ThreadPool
    ImplementingResourceType=Server
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:Thr
    eadPoolManager=ID#ThreadPoolManager_1:ThreadPool=myThreadPool
    #
    
    #
    #Properties
    #
    maximumSize=20 #integer
    name=myThreadPool
    inactivityTimeout=5000 #integer
    minimumSize=5 #integer
    isGrowable=false #boolean

    使用此属性文件调用 applyConfigProperties 命令时,该命令将创建新的线程池:

    wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName thp.props ]')

  • 示例 3:使用 deleteConfigProperties 命令删除现有对象

    要删除对象,请使用 deleteConfigProperties 命令。例如,要删除刚才在示例 2 中创建的线程池,您可以使用创建命令所使用的同一属性文件来运行该命令,但是在标题中使用 DELETE=true,如清单 30 所示。



    清单 30. 使用 deleteConfigProperties 命令删除现有对象
    						
    #
    # SubSection 1.0.1.4 # Thread pools
    #
    ResourceType=ThreadPool
    ImplementingResourceType=Server
    ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:Thr
    eadPoolManager=ID#ThreadPoolManager_1:ThreadPool=myThreadPool
    DELETE=true
    #
    
    #
    #Properties
    #
    maximumSize=20 #integer
    name=myThreadPool
    inactivityTimeout=5000 #integer
    minimumSize=5 #integer
    isGrowable=false #boolean

    或者,不使用 ThreadPool=myThreadPool,而改为使用 ThreadPool=ID#ThreadPool_12345。您必须确保输入的 ID(这里为“ThreadPool_12345”)是此对象的配置中的实际 ID。

    将 deleteConfigProperties 命令与上述属性文件一起使用来删除该对象。它将从配置中删除属性文件表示的线程池:

    wsadmin> AdminTask.deleteConfigProperties('[-propertiesFileName thp.props ]')

    请注意,如果未指定 DELETE,则 deleteConfigProperties 命令将尝试删除每个属性,并将对象保留在配置中。从对象移除每个属性时,属性将重设为缺省值(如果存在缺省值)或者被移除。

更多示例

下面是您可以使用基于属性文件的配置执行的其他功能的一些示例:

  • 使用属性文件安装应用程序

    使用 applyConfigProperties 命令应用清单 31 中的属性文件时,将安装属性文件中指定的应用程序。



    清单 31. 使用属性文件安装应用程序
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=
    
    # Properties
    Name=hello
    TargetServer=server1
    TargetNode=node1
    EarFileLocation=/temp/Hello.ear
    #TargetCluster=cluster1

  • 使用属性文件卸载应用程序

    使用 deleteConfigProperties 命令应用清单 32 中的属性文件时,将卸载属性文件中指定的应用程序。



    清单 32. 使用 deleteConfigProperties 命令 卸载属性文件中指定的应用程序
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello

  • 使用属性文件更新应用程序

    要更新已安装的应用程序,您可以使用 applyConfigProperties 命令通过属性文件执行各种更新。要添加单个文件,请使用属性文件(如清单 33 所示的属性文件)调用 applyConfigProperties 命令。



    清单 33. 使用属性文件更新应用程序
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=add
    contentType=file
    contentURI=test.war/com/ibm/addMe.jsp
    contentFile=c:/temp/addMe.jsp

    要删除单个文件,请使用属性文件(如清单 34 所示的属性文件)调用 applyConfigProperties 命令。



    清单 34. 删除单个文件
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=delete
    contentType=file
    contentURI=test.war/com/ibm/addMe.jsp

    要添加模块,请使用属性文件(如清单 35 所示的属性文件)调用 applyConfigProperties 命令。



    清单 35. 添加模块
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=add
    contentType=moduleFile
    #contextRoot=”/mywebapp” # required for webmodule only
    contentURI= Increment.jar
    contentFile= c:/apps/app1/Increment.jar
    deployEJB=false

    要删除模块,请使用属性文件(如清单 36 所示的属性文件)调用 applyConfigProperties 命令。



    清单 36. 删除模块
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=delete
    contentType=moduleFile
    contentURI= test.war

    要执行部分更新,请使用属性文件(如清单 37 所示的属性文件)来调用 applyConfigProperties 命令。



    清单 37. 执行部分更新
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=update
    contentType=partialapp
    contentFile= c:/temp/MyApp/myAppPartial.zip

    要执行完全更新,请使用属性文件(如清单 38 所示的属性文件)调用 applyConfigProperties 命令。



    清单 38. 执行完全更新
    						
    # Header
    ResourceType=Application
    ImplementingResourceType=Application
    ResourceId=Deployment=hello
    
    # Properties
    Name=hello
    Update=true
    operationType=update
    contentType=app
    contentFile= c:/apps/app1/newApp1.ear
    useDefaultBindings=true





回页首


总结

基于属性的配置是监视和管理 IBM WebSphere Application Server V7.0 配置的新的独特方法。它为管理 WebSphere Application Server 环境提供了一种更为方便的方法,因为该配置不需要深入了解复杂的配置模型或重要的编程技能。不过,在更新配置时仍要多加小心,因为应用服务器的行为直接取决于这些配置参数。本文通过一些示例说明了使用基于属性的配置可以进行哪些配置以及如何进行配置。您可以在WebSphere Application Server 信息中心中找到有关此主题和此功能的详细信息。



参考资料

学习

获得产品和技术

讨论


作者简介

John Chang 是 IBM 的顾问软件工程师。他在德克萨斯州奥斯汀从事 WebSphere Application Server 开发。在加入 WebSphere Web Services 团队之前,John 从事 WebSphere 安全和系统管理工作,其中主要从事 WebSphere Web 服务管理工作。


Amy Lin 是 IBM 的一名软件工程师,在位于奥斯汀的 WebSphere System Management 团队工作。她目前是 wsadmin 脚本开发负责人,负责 WebSphere wsadmin 开发,以支持多种脚本语言(Jacl 和 Jython)。在此之前,她从事的工作是 J2EE 1.4、混合计算单元以及 WebSphere Application Server 4.0 和 6.0 版本的管理安全项目。她拥有德州大学奥斯汀分校的计算机工程硕士学位和计算机科学学士学位。


Vishwanath Venkataramappa 是 IBM 的高级软件工程师,在位于澳斯汀的 WebSphere Application Server 开发部门工作。在加入 WebSphere 系统管理团队之前,Vishwanath 在 WebSphere 安全团队工作,主要从事 WebSphere 配置工作。


Syed-Muasir Khalil 是 WebSphere 命名功能测试团队的负责人兼 WebSphere 应用程序管理组件的功能测试开发人员。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款