Configuring applications for session management in web modules using scripting

Use scripting and the wsadmin tool to configure applications for session management in web modules.

About this task

You can use the AdminApp object to set configurations in an application. Some configuration settings are not available through the AdminApp object. The following task uses the AdminConfig object to configure a session manager for a web module in the application.

Procedure

  1. wsadmin 스크립트 도구를 시작하십시오.
  2. Identify the deployment configuration object for the application and assign it to the deployment variable. For example:
    • Using Jacl:
      set deployments [$AdminConfig getid /Deployment:myApp/]
    • Using Jython:
      deployments = AdminConfig.getid('/Deployment:myApp/')
      print deployments
    where:
    Table 1. Deployment configuration values. The following table describes the elements of the getid command.
    Element Definition
    set is a Jacl command
    deployments is a variable name
    $ is a Jacl operator for substituting a variable name with its value
    AdminConfig is an object that represents the WebSphere® Application Server configuration
    getid is an AdminConfig command
    Deployment is an attribute
    myApp is the value of the attribute
    Example output:
    myApp(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#Deployment_1)
  3. Get all the modules in the application and assign them to the modules variable. For example:
    • Using Jacl:
      set appDeploy [$AdminConfig showAttribute $deployments deployedObject]
      set mod1 [$AdminConfig showAttribute $appDeploy modules]
      set mod1 [lindex $mod1 0]
      Example output:
      (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)
    • Using Jython:
      appDeploy = AdminConfig.showAttribute(deployments, 'deployedObject')
      mod1 = AdminConfig.showAttribute(appDeploy, 'modules')
      print mod1
      Example output:
      [(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)]
    where:
    Table 2. Application module values. The following table describes the elements of the showAttribute AdminConfig command.
    Element Definition
    set is a Jacl command
    appDeploy is a variable name
    mod1 is a variable name
    $ is a Jacl operator for substituting a variable name with its value
    AdminConfig is an object that represents the WebSphere Application Server configuration
    showAttribute is an AdminConfig command
    deployments evaluates the ID of the deployment object that is specified in step number 1
    deployedObject is an attribute
  4. To obtain a list of attributes that you can set for a session manager, use the attributes command. For example:
    • Using Jacl:
      $AdminConfig attributes SessionManager
    • Using Jython:
      print AdminConfig.attributes('SessionManager')
    where:
    Table 3. attributes AdminConfig command. The following table describes the elements for the attributes AdminConfig command.
    Element Definition
    $ is a Jacl operator for substituting a variable name with its value
    AdminConfig is an object that represents the WebSphere Application Server configuration
    attributes is an AdminConfig command
    SessionManager is an attribute
    Example output:
    "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. Set up the attributes for session manager. The following example sets four top-level attributes in the session manager.

    You can modify the example to set other attributes in the session manager, including the nested attributes in Cookie, DRSSettings, SessionDataPersistence, and TuningParms object types. To list the attributes for those object types, use the attributes command of AdminConfig object.

    문제점 방지 문제점 방지: The session manager requires that you set both the defaultCookieSettings and tuningParams attributes before you initialize an application. If you do not set these attributes, the session manager cannot initialize the application, and the application does not start. gotcha
    • Using 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]
      지원된 구성 지원된 구성: The last five lines in the previous sample assumes that you deployed the web module to only one target server. You can target a module to multiple servers or clusters, by using a loop, if you want to apply the update to each target. Replace the last six lines of the previous sample with the following code to apply updates to multiple targets:
      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
      Example output using Jacl:
      sessionManagement {{enableSecurityIntegration true} {maxWaitTime 30} 
      {sessionPersistenceMode NONE} {enabled true}}
    • Using 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])
      지원된 구성 지원된 구성: The last six lines in the previous sample assumes that you deployed the web module to only one target server. You can target a module to multiple servers or clusters, by using a loop, if you want to apply the update to each target. Replace the last six lines of the previous sample with the following code to apply updates to multiple targets:
      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
      Example output using Jython:
      [sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30], [sessionPersistenceMode, NONE]]
  6. Set up the attributes for the web module. For example:
    • Using Jacl:
      set nameAttr [list name myWebModuleConfig]
      set descAttr [list description "Web Module config post create"]
      set webAttrs [list $nameAttr $descAttr $sessionMgr]
      Example output:
      {name myWebModuleConfig} {description {Web Module config post create}} 
      {sessionManagement {{enableSecurityIntegration true} {maxWaitTime 30} 
      {sessionPersistenceMode NONE} {enabled true}}}
    • Using Jython:
      nameAttr = ['name', 'myWebModuleConfig']
      descAttr = ['description', "Web Module config post create"]
      webAttrs = [nameAttr, descAttr, sessionMgr]
      Example output:
      [[name, myWebModuleConfig], [description, "Web Module config post create"], 
      [sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30],  
      [sessionPersistenceMode, NONE], [enabled, true]]]]
    where:
    Table 4. Setting the attributes for the web module. The following table describes the elements for setting the attributes of the web module.
    Element Definition
    set is a Jacl command
    nameAttr, descAttr, webAttrs are variable names
    $ is a Jacl operator for substituting a variable name with its value
    name is an attribute
    myWebModuleConfig is a value of the name attribute
    description is an attribute
    Web Module config post create is a value of the description attribute
  7. Create the session manager for each web module in the application. You can modify the following example to set other attributes of the session manager in a web module configuration. You must also define a target mapping for this step.
    • Using 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]
      	}
      }
      지원된 구성 지원된 구성: You can add an optional, additional loop to assign new web module configuration to each target, if the web module is deployed to more than one target server:
      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
    • Using 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])
      지원된 구성 지원된 구성: You can add an optional, additional loop to assign new web module configuration to each target, if the web module is deployed to more than one target server:
      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
    Example output:
    myWebModuleConfig(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#WebModuleConfiguration_1)

    If you do not specify the tuningParamsList attribute when you create the session manager, you will receive an error when you start the deployed application.

  8. Save the configuration changes.
    다음 명령 예제를 사용하여 구성 변경사항을 저장하십시오.
    AdminConfig.save()
  9. In a network deployment environment only, synchronize the node.
    AdminNodeManagement 스크립트 라이브러리에 있는 syncActiveNode 또는 syncNode 스크립트를 사용하여 구성 변경사항을 노드에 전파하십시오.
    • 다음 명령 데모에 표시된 것과 같이, syncActiveNodes 스크립트를 사용하여 변경사항을 셀 내의 각 노드에 전파하십시오.
      AdminNodeManagement.syncActiveNodes()
    • 다음 명령 데모에 표시된 것과 같이, syncNode 스크립트를 사용하여 변경사항을 특정 노드에 전파하십시오.
      AdminNodeManagement.syncNode("myNode")

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: July 9, 2016 6:15
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_webmodules
파일 이름:txml_webmodules.html