使用脚本编制为 Web 模块中的会话管理配置应用程序
使用脚本编制和 wsadmin 工具为 Web 模块中的会话管理配置应用程序。
关于此任务
可以使用 AdminApp 对象来设置应用程序中的配置。某些配置设置不可用于 AdminApp 对象。以下任务使用 AdminConfig 对象来配置应用程序中 Web 模块的会话管理器。
过程
- 启动 wsadmin 脚本编制工具。
- 识别应用程序的部署配置对象,并将其指定给 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)
- 获取应用程序中的所有模块并将它们指定给 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 是属性 - 要获取可为会话管理器设置的属性列表,请使用 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"
- 设置会话管理器的属性。以下示例设置会话管理器中的四个顶级属性。
可以修改本示例以设置会话管理器中的其他属性,包括 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 模块。如果要将更新应用到每个目标,那么可以使用循环,将模块的目标设为多个服务器或集群。使用下列代码来替换先前样本的最后六行,以将更新应用到多个目标:
sptcfgset 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] } }
使用 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 模块。如果要将更新应用到每个目标,那么可以使用循环,将模块的目标设为多个服务器或集群。使用下列代码来替换先前样本的最后六行,以将更新应用到多个目标:
sptcfgid = 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
使用 Jython 的示例输出:[sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30], [sessionPersistenceMode, NONE]]
- 设置 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 属性的值 - 为应用程序中的每个 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 模块配置指定给每个目标:
sptcfgforeach 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] } } }
- 使用 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 模块配置指定给每个目标:
sptcfgarrayModules = 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])
示例输出:myWebModuleConfig(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#WebModuleConfiguration_1)
如果在创建会话管理器时未指定 tuningParamsList 属性,您将在启动已部署应用程序时接收到错误。
- 保存配置更改。 请使用以下命令示例来保存配置更改:
AdminConfig.save()
- 仅在 Network Deployment 环境中使节点同步。 使用 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_webmodules
文件名:txml_webmodules.html