使用脚本编制为 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。 属性 AdminConfig 命令。 下表描述属性 AdminConfig 命令的元素。 元素 定义 $ 是使用其值替换变量名的 Jacl 运算符 AdminConfig 是表示 WebSphere Application Server 配置的对象 属性 是 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 命令。
避免麻烦: 会话管理器要求您在初始化应用程序之前设置 defaultCookie设置和 tuningParams 属性。 如果不设置这些属性,那么会话管理器将不能初始化应用程序,并且应用程序将不启动。- 使用 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] } }使用 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使用 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 运算符 名称 是属性 myWebModuleConfig 是 name 属性的值 描述 是属性 Web 模块配置帖子创建 是 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 模块配置分配给每个目标: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] } } } - 使用 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])
示例输出如下所示:myWebModuleConfig(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#WebModuleConfiguration_1)如果在创建会话管理器时未指定 tuningParamsList 属性,您将在启动已部署应用程序时接收到错误。
- 保存配置更改。请使用以下命令示例来保存配置更改:
AdminConfig.save()