使用脚本编制为 Web 模块中的会话管理配置应用程序

使用脚本编制和 wsadmin 工具为 Web 模块中的会话管理配置应用程序。

关于此任务

可以使用 AdminApp 对象来设置应用程序中的配置。某些配置设置不可用于 AdminApp 对象。以下任务使用 AdminConfig 对象来配置应用程序中 Web 模块的会话管理器。

过程

  1. 启动 wsadmin 脚本编制工具。
  2. 识别应用程序的部署配置对象,并将其指定给 deployment 变量。例如:
    • 使用 Jacl:
      set deployments [$AdminConfig getid /Deployment:myApp/]
    • 使用 Jython:
      deployments = AdminConfig.getid('/Deployment:myApp/')
      print deployments
    其中:
    表 1. 部署配置值. 下表描述了 getid 命令的元素。
    元素 定义
    set 是 Jacl 命令
    deployments 是变量名
    $ 是使用其值替换变量名的 Jacl 运算符
    AdminConfig 是表示 WebSphere® Application Server 配置的对象
    getid 是 AdminConfig 命令
    部署 是属性
    myApp 是属性的值
    示例输出:
    myApp(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#Deployment_1)
  3. 获取应用程序中的所有模块并将它们指定给 modules 变量。例如:
    • 使用 Jacl:
      set appDeploy [$AdminConfig showAttribute $deployments deployedObject]
      set mod1 [$AdminConfig showAttribute $appDeploy modules]set mod1 [lindex $mod1 0]
      示例输出:
      (cells/mycell/applications/myApp.ear/deployments/myApp:deployment.xml#WebModuleDeployment_1)
      (cells/mycell/applications/myApp.ear/deployments/myApp:deployment.xml#EJBModuleDeployment_1)
      (cells/mycell/applications/myApp.ear/deployments/myApp:deployment.xml#WebModuleDeployment_2)
    • 使用 Jython:
      appDeploy = AdminConfig.showAttribute(deployments, 'deployedObject')
      mod1 = AdminConfig.showAttribute(appDeploy, 'modules')
      print mod1
      示例输出:
      [(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#WebModuleDeployment_1) 
      (cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#EJBModuleDeployment_1)
      (cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#EJBModuleDeployment_2)]
    其中:
    表 2. 应用程序模块值. 下表描述了 showAttribute AdminConfig 命令的元素。
    元素 定义
    set 是 Jacl 命令
    appDeploy 是变量名
    mod1 是变量名
    $ 是使用其值替换变量名的 Jacl 运算符
    AdminConfig 是表示 WebSphere Application Server 配置的对象
    showAttribute 是 AdminConfig 命令
    deployments 对步骤 1 中指定的部署对象标识所求的值
    deployedObject 是属性
  4. 要获取可为会话管理器设置的属性列表,请使用 attributes 命令。例如:
    • 使用 Jacl:
      $AdminConfig attributes SessionManager
    • 使用 Jython:
      print AdminConfig.attributes('SessionManager')
    其中:
    表 3. attributes AdminConfig 命令. 下表描述了 attributes AdminConfig 命令的元素。
    元素 定义
    $ 是使用其值替换变量名的 Jacl 运算符
    AdminConfig 是表示 WebSphere Application Server 配置的对象
    attributes 是 AdminConfig 命令
    SessionManager 是属性
    示例输出:
    "accessSessionOnTimeout Boolean"
    "allowSerializedSessionAccess Boolean"
    "context ServiceContext@"
    "defaultCookieSettings Cookie"
    "enable Boolean"
    "enableCookies Boolean"
    "enableProtocolSwitchRewriting Boolean"
    "enableSSLTracking Boolean"
    "enableSecurityIntegration Boolean"
    "enableUrlRewriting Boolean"
    "maxWaitTime Integer"
    "properties Property(TypedProperty)*"
    "sessionDRSPersistence DRSSettings"
    "sessionDatabasePersistence SessionDatabasePersistence"
    "sessionPersistenceMode ENUM(DATABASE, DATA_REPLICATION, NONE)"
    "tuningParams TuningParams"
  5. 设置会话管理器的属性。以下示例设置会话管理器中的四个顶级属性。

    可以修改本示例以设置会话管理器中的其他属性,包括 Cookie、DRSSettings、SessionDataPersistence 和 TuningParms 对象类型中的嵌套属性。要列示这些对象类型的属性,使用 AdminConfig 对象的 attributes 命令。

    避免故障 避免故障: 会话管理器需要您先设置 defaultCookieSettings 和 tuningParams 属性,再初始化应用程序。 如果不设置这些属性,那么会话管理器将不能初始化应用程序,并且应用程序将不启动。gotcha
    • 使用 Jacl:
      set attr0 [list enable true]
      set attr1 [list enableSecurityIntegration true]
      set attr2 [list maxWaitTime 30]
      set attr3 [list sessionPersistenceMode NONE]
      set attr4 [list enableCookies true]
      set attr5 [list invalidationTimeout 45]
      set tuningParmsDetailList [list $attr5]
      set tuningParamsList [list tuningParams $tuningParmsDetailList]
      set pwdList [list password 95ee608]
      set userList [list userId Administrator]
      set dsNameList [list datasourceJNDIName jdbc/session]
      set dbPersistenceList [list $dsNameList $userList $pwdList]
      set sessionDBPersistenceList [list $dbPersistenceList]
      set sessionDBPersistenceList [list sessionDatabasePersistence $dbPersistenceList]
      set kuki [list maximumAge 1000]
      set cookie [list $kuki]
      set cookieSettings [list defaultCookieSettings $cookie]
      set sessionManagerDetailList [list $attr0 $attr1 $attr2 $attr3 $attr4 $cookieSettings $tuningParamsList $sessionDBPersistenceList]
      set sessionMgr [list sessionManagement $sessionManagerDetailList]
      set id [$AdminConfig create ApplicationConfig $appDeploy [list $sessionMgr] configs]
      set targetMappings [lindex [$AdminConfig showAttribute $appDeploy targetMappings] 0]
      set attrs [list config $id]
      $AdminConfig modify $targetMappings [list $attrs]
      支持的配置 支持的配置: 先前样本中的最后五行假定您只在一个目标服务器中部署了 Web 模块。如果要将更新应用到每个目标,那么可以使用循环,将模块的目标设为多个服务器或集群。使用下列代码来替换先前样本的最后六行,以将更新应用到多个目标:
      set id [$AdminConfig create ApplicationConfig $appDeploy [list $sessionMgr] configs]
      
      set targetMappings [lindex [$AdminConfig showAttribute $appDeploy targetMappings] 0]
      
      foreach target $targetMappings {
          if {[regexp DeploymentTargetMapping $target] == 1} {
              set attrs [list config $id]
              $AdminConfig modify $target [list $attrs]
          }
      }
      sptcfg
      使用 Jacl 的示例输出:
      sessionManagement {{enableSecurityIntegration true} {maxWaitTime 30} 
      {sessionPersistenceMode NONE} {enabled true}}
    • 使用 Jython:
      attr0 = ['enable', 'true']
      attr1 = ['enableSecurityIntegration', 'true']
      attr2 = ['maxWaitTime', 30]
      attr3 = ['sessionPersistenceMode', 'NONE']
      attr4 = ['enableCookies', 'true']
      attr5 = ['invalidationTimeout', 45]
      tuningParmsDetailList = [attr5]
      tuningParamsList = ['tuningParams', tuningParmsDetailList]
      pwdList = ['password', '95ee608']
      userList = ['userId', 'Administrator']
      dsNameList = ['datasourceJNDIName', 'jdbc/session']
      dbPersistenceList = [dsNameList, userList, pwdList]
      sessionDBPersistenceList = [dbPersistenceList]
      sessionDBPersistenceList = ['sessionDatabasePersistence', dbPersistenceList]
      kuki = ['maximumAge', 1000]
      cookie = [kuki]
      cookieSettings = ['defaultCookieSettings', cookie]
      sessionManagerDetailList = [attr0, attr1, attr2, attr3, attr4, cookieSettings, tuningParamsList, sessionDBPersistenceList]
      sessionMgr = ['sessionManagement', sessionManagerDetailList]
      id = AdminConfig.create('ApplicationConfig', appDeploy,[sessionMgr], 'configs')
      targetMappings = AdminConfig.showAttribute(appDeploy, 'targetMappings')
      targetMappings = targetMappings[1:len(targetMappings)-1]
      print targetMappings
      attrs = ['config', id]
      AdminConfig.modify(targetMappings,[attrs])
      支持的配置 支持的配置: 先前样本中的最后六行假定您只在一个目标服务器中部署了 Web 模块。如果要将更新应用到每个目标,那么可以使用循环,将模块的目标设为多个服务器或集群。使用下列代码来替换先前样本的最后六行,以将更新应用到多个目标:
      id = AdminConfig.create('ApplicationConfig', appDeploy,[sessionMgr], 'configs')
      
      targetMappings = AdminConfig.showAttribute(appDeploy, 'targetMappings')
      targetMappings = targetMappings[1:len(targetMappings)-1].split(" ")
      for target in targetMappings:
       if target.find('DeploymentTargetMapping') != -1:
        attrs = ['config', id]
        AdminConfig.modify(target,[attrs])
       #endif
      #endfor
      sptcfg
      使用 Jython 的示例输出:
      [sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30], [sessionPersistenceMode, NONE]]
  6. 设置 Web 模块的属性。例如:
    • 使用 Jacl:
      set nameAttr [list name myWebModuleConfig]
      set descAttr [list description "Web Module config post create"]
      set webAttrs [list $nameAttr $descAttr $sessionMgr]
      示例输出:
      {name myWebModuleConfig} {description {Web Module config post create}} 
      {sessionManagement {{enableSecurityIntegration true} {maxWaitTime 30} 
      {sessionPersistenceMode NONE} {enabled true}}}
    • 使用 Jython:
      nameAttr = ['name', 'myWebModuleConfig']
      descAttr = ['description', "Web Module config post create"]
      webAttrs = [nameAttr, descAttr, sessionMgr]
      示例输出:
      [[name, myWebModuleConfig], [description, "Web Module config post create"], 
      [sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30],  
      [sessionPersistenceMode, NONE], [enabled, true]]]]
    其中:
    表 4. 设置 Web 模块的属性. 下表描述了用于设置 Web 模块属性的元素。
    元素 定义
    set 是 Jacl 命令
    nameAttr、descAttr 和 webAttrs 是变量名
    $ 是使用其值替换变量名的 Jacl 运算符
    name 是属性
    myWebModuleConfig 是 name 属性的值
    description 是属性
    Web Module config post create 是 description 属性的值
  7. 为应用程序中的每个 Web 模块创建会话管理器。可以修改以下示例以设置 Web 模块配置中会话管理器的其他属性。还必须为此步骤定义目标映射。
    • 使用 Jacl:
      foreach module $mod1 {
      	if {[regexp WebModuleDeployment $module] == 1} {
      				set moduleConfig [$AdminConfig create WebModuleConfig $module $webAttrs]
      				set targetMappings [lindex [$AdminConfig showAttribute $module targetMappings] 0]
      				set attrs [list config $moduleConfig]
      		$AdminConfig modify $targetMappings [list $attrs]	}
      }
      支持的配置 支持的配置: 如果将 Web 模块部署到多个目标服务器,那么可以附加可选的循环,以将新的 Web 模块配置指定给每个目标:
      foreach module $mod1 { 
          if {[regexp WebModuleDeployment $module] == 1} {
              		set moduleConfig [$AdminConfig create WebModuleConfig $module $webAttrs]
              		set targetMappings [lindex [$AdminConfig showAttribute $module targetMappings] 0]
              foreach target $targetMappings {
              if {[regexp DeploymentTargetMapping $target] == 1} {
                  		set attrs [list config $moduleConfig]
                  $AdminConfig modify $target [list $attrs]
              } 
          }
      }
      sptcfg
    • 使用 Jython:
      arrayModules = mod1[1:len(mod1)-1].split(" ")
      	for module in arrayModules:
      	if module.find('WebModuleDeployment') != -1:
      				AdminConfig.create('WebModuleConfig', module, webAttrs)
      		targetMappings = targetMappings[1:len(targetMappings)-1]
      				attrs = ['config', moduleConfig]
      				AdminConfig.modify (targetMappings, [attrs])
      支持的配置 支持的配置: 如果将 Web 模块部署到多个目标服务器,那么可以附加可选的循环,以将新的 Web 模块配置指定给每个目标:
      arrayModules = mod1[1:len(mod1)-1].split(" ")
      	for module in arrayModules:
        if module.find('WebModuleDeployment') != -1:
          moduleConfig = AdminConfig.create('WebModuleConfig', module, webAttrs)
          		attrs = ['config', moduleConfig]
          targetMappings = AdminConfig.showAttribute(appDeploy, 'targetMappings')
          targetMappings = targetMappings[1:len(targetMappings)-1].split(" ")
          for target in targetMappings:
              if target.find('DeploymentTargetMapping') != -1:
                  		attrs = ['config', moduleConfig]
                  AdminConfig.modify(target,[attrs])
      sptcfg
    示例输出:
    myWebModuleConfig(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#WebModuleConfiguration_1)

    如果在创建会话管理器时未指定 tuningParamsList 属性,您将在启动已部署应用程序时接收到错误。

  8. 保存配置更改。
    请使用以下命令示例来保存配置更改:
    AdminConfig.save()
  9. 仅在 Network Deployment 环境中使节点同步。
    使用 AdminNodeManagement 脚本库中的 syncActiveNode 或 syncNode 脚本将配置更改传播至一个或多个节点。
    • 使用 syncActiveNodes 脚本将更改传播至单元中的每个节点,如以下示例所示:
      AdminNodeManagement.syncActiveNodes()
    • 使用 syncNode 脚本将更改传播至特定节点,如以下示例所示:
      AdminNodeManagement.syncNode("myNode")

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_webmodules
文件名:txml_webmodules.html