Network Deployment (Distributed operating systems), v8.0 > Scripting the application serving environment (wsadmin) > Scripting web applications
Configure applications for session management using scripting
This task provides an example that uses the AdminConfig object to configure a session manager for the application.
An application must be installed on a running server.
We can use the AdminConfig object to set configurations in an application. Some configuration settings are not available through the AdminConfig object.
Procedure
- Start wsadmin.sh.
- Identify the deployment configuration object for the application and assign it to the deployment variable.
This step is not needed for an OSGi application. See Add an EBA asset to a composition unit using wsadmin commands and Modify the configuration of an EBA composition unit using wsadmin.
For example:
### Jacl
set deployments [$AdminConfig getid /Deployment:myApp/]### Jython
deployments = AdminConfig.getid('/Deployment:myApp/') print deployments
where:
Example output:
myApp(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#Deployment_1)
- Retrieve the application deployment object and assign it to the appDeploy variable. For example:
### Jacl
set appDeploy [$AdminConfig showAttribute $deployments deployedObject]### Jython
appDeploy = AdminConfig.showAttribute(deployments, 'deployedObject') print appDeploy
For an OSGi application, use the following jython code for this step:
appDeploy = AdminTask.getOSGiApplicationDeployedObject('-cuName cu_name')
where:
Example output:
(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#ApplicationDeployment_1)
- To obtain a list of attributes that you can set for a session manager, use the attributes command. For example:
### Jacl
$AdminConfig attributes SessionManager### Jython
print AdminConfig.attributes('SessionManager')
where:
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"When you configure an application for session management, IBM recommends that you specify each attribute. If you are setting up the session management attributes for a cluster, also update the targetMappings element of the AdminConfig object for the cluster before the settings you specify for the sessionManagment element become effective. If you do not update the targetMappings element, the settings are not effective even though they appear in the deployment.xml file.
- Set up the attributes for the session manager.
The following example sets four top-level attributes in the session manager. We can modify the example to set other attributes of the session manager, including the nested attributes in DRSSettings, SessionDataPersistence, and TuningParms object types. 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.
To list the attributes for those object types, use the attributes command of the AdminConfig object.
### Jacl
set attr1 [list enableSecurityIntegration true] set attr2 [list maxWaitTime 30] set attr3 [list sessionPersistenceMode NONE] set kuki [list maximumAge -1] set cookie [list $kuki] Set cookieSettings [list defaultCookieSettings $cookie] set attrs [list $attr1 $attr2 $attr3 $cookieSettings] set sessionMgr [list sessionManagement $attrs]Example output using Jacl:
sessionManagement {{enableSecurityIntegration true} {maxWaitTime 30} {sessionPersistenceMode NONE} {defaultCookieSettings {{maximumAge -1}}}}### Jython
attr1 = ['enableSecurityIntegration', 'true'] attr2 = ['maxWaitTime', 30] attr3 = ['sessionPersistenceMode', 'NONE'] kuki = ['maximumAge', -1] cookie = [kuki] cookieSettings = ['defaultCookieSettings', cookie] attrs = [attr1, attr2, attr3, cookieSettings] sessionMgr = [['sessionManagement', attrs]]Example output using Jython:
[[sessionManagement, [[enableSecurityIntegration, true], [maxWaitTime, 30], [sessionPersistenceMode, NONE], [defaultCookieSettings [[maximumAge, -1]]]]
- Perform one of the following:
- Create the session manager for the application. For example:
### Jacl
$AdminConfig create ApplicationConfig $appDeploy [list $sessionMgr]### Jython
print AdminConfig.create('ApplicationConfig', appDeploy, sessionMgr)
where:
Example output:
(cells/mycell/applications/myApp.ear/deployments/myApp|deployment.xml#ApplicationConfig_1)
- If a session manager already exists, use the modify command of the AdminConfig object to update the configuration of the session manager. For example:
### Jacl
set configs [lindex [$AdminConfig showAttribute $appDeploy configs] 0] set appConfig [lindex $configs 0] set SM [$AdminConfig showAttribute $appConfig sessionManagement] $AdminConfig modify $SM $attrs### Jython
configs = AdminConfig.showAttribute (appDeploy, 'configs') appConfig = configs[1:len(configs)-1] SM = AdminConfig.showAttribute (appConfig, 'sessionManagement') AdminConfig.modify (SM, attrs)
- Save the configuration changes.
Save the configuration changes:
AdminConfig.save()
- Synchronize the node.
Use the syncActiveNode or syncNode scripts in the AdminNodeManagement script library to propagate the configuration changes to node or nodes.
- Use the syncActiveNodes script to propagate the changes to each node in the cell:
AdminNodeManagement.syncActiveNodes()
- Use the syncNode script to propagate the changes to a specific node:
AdminNodeManagement.syncNode("myNode")
Session management support
Start the wsadmin scripting client using wsadmin.sh
Configure applications for session management in web modules using scripting
Configure session management by level
Develop session management in servlets
Use the script library to automate the application serving environment using wsadmin.sh
Use the wsadmin scripting AdminConfig object for scripted administration