WLST - Presentation Transcript
WLST Bhavya Siddappa May 30, 2008
Topics of Discussion
Create Domain through WLST
Puzzle
Embedded, Script, Interactive
Match the Following:
Let’s Check out what's right and what's wrong!
WLST - Weblogic Scripting Tool
Jython - Embedded scripting language
Mode of WLST Interaction - Interactive, Scripting and Embedded
WLST Case Sensitive - true
What is WLST?
Monitor, Manage & Configure WebLogic Server (online/offline)
Similar to any programming language
config wizard(silent mode)
Modes of Operation
Prototyping command syntax
Record Interactions to a script to play it later
Modes of Operation
Sequence of commands via file
Use loops, flow control, conditional statements, variables
Modes of Operation
Able to Call WLST interpreter from within your Java code
Executing WLST Script File
1. java weblogic.WLST filePath.py
2. execfile (filePath.py)
c:> java weblogic.WLST c:/temp/example.py c:> java weblogic.WLST Initializing WebLogic Scripting Tool (WLST) ... ... ... wls:/(offline)> execfile('c:/temp/example.py') starting the script ...
Using WLST- Online
Access to Managed Beans (MBeans).
Navigate and interrogate MBeans
Browsing the MBean hierarchy on connecting to a Server instance
BEA Systems recommends changes in the values of configuration MBeans on the Administration Server but not on Managed Server
Using WLST- Offline
Create a new domain or update an existing domain
You can create new config info., and retrieve and change existing config info from config.xml
WLST Syntax Restrictions
Control Commands - connect, disconnect, exit
Commands and arguments are case sensitive
Use only forward slash (/) in a file pathname:
Following characters are not valid in object names:
cd (‘c:/temp/mytemplate.jar')
Using WLST- Help
Display help information for WLST commands by entering the help command:
wls:/mydomain/serverConfig> help('disconnect')
Features -Advantages
Easily move resources from one Domain to another
Make reliable changes to config.xml without a running server
Use WLST in conjunction with any java utility tools (e.g. ant, jython scripts)
Extend WLST to add any Custom commands
WLST helps in retrieving MBeans names in a similar fashion to navigating
hierarchy of files in a file system.
Configuration MBean Hierarchy
Configuration MBean Hierarchy
|- - - MBean type (LogMBean)
|- - - MBean instance (medrec)
|- - - MBean attributes & operations (e.g. FileName)
|- - - MBean type (SecurityConfigurationMBean)
|- - - MBean type (ServerMBean)
|- - - MBean instance (ManagedServer1)
|- - - MBean attributes & operations (e.g.AutoRestart)
Current Management Object
When WLST first connects to an instance of WebLogic Server, cmo is initialized to the root of all configuration management objects: DomainMBean.
MBean type, the value of cmo reflects the parent MBean.
MBean name, gives the name of the mbean object
Edit Configuration MBeans
DomainMBean root contains editable copy of all configuration MBeans in the domain. The 「 change management process」 controls distributing configuration changes in a domain representing a DB transaction
edit()- used to create, delete, get, set, invoke
startEdit() - initiates modifications that are treated as a part of a batch change that is not committed to the repository until you enter the save command.
validate() - ensures that changes are valid before saving
save() - saves your changes to a pending version
activate() - initiates the distribution of the changes and releases the loc
stopEdit() - stops the current editing session and releases edit lock.
isRestartRequired(‘true’) - determines if a change made to an MBean attribute requires re-start
Feature – Create/Configure Domain
WLST enables creating a new domain or updating an existing domain without connecting to a running WebLogic Server
Creating a Domain (Offline)
Create a new domain using a specified template - createDomain (domainTemplate,domainDir, user, password)
Open an existing domain template for domain creation - readTemplate (templateFileName)
writeDomain (domainDirName)
Updating an Existing Domain (Offline)
Open an existing domain for update - readDomain (domainDirName)
Extend the current domain - addTemplate (templateFileName)
Save the domain - updateDomain ()
Sample Code – Create a Domain
readTemplate(‘ d:/bea_9.2/weblogic92/common/templates/domains ')
// Create Admin server with SSL enabled
cd('Servers/AdminServer')
cd('Security/base_domain/User/weblogic')
cmo.setPassword('weblogic')
Sample Code – Create a Domain
create('myJMSServer', 'JMSServer')
create('myJmsSystemResource', 'JMSSystemResource')
cd('JMSSystemResource/myJmsSystemResource/JmsResource/NO_NAME_0')
myq=create('myQueue','Queue')
myq.setJNDIName('jms/myqueue')
myq.setSubDeploymentName('myQueueSubDeployment')
cd('JMSSystemResource/myJmsSystemResource')
create('myQueueSubDeployment', 'SubDeployment')
Sample Code – Create a Domain
create('myDataSource', 'JDBCSystemResource')
cd('JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
create('myJdbcDriverParams','JDBCDriverParams')
cd('JDBCDriverParams/NO_NAME_0')
set('DriverName','com.pointbase.jdbc.jdbcUniversalDriver')
set('URL','jdbc:pointbase:server://localhost/demo')
set('PasswordEncrypted', 'PBPUBLIC')
set('UseXADataSourceInterface', 'false')
create('myProps','Properties')
cd('Properties/NO_NAME_0')
create('user', 'Property')
Sample Code – Create a Domain
cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
create('myJdbcDataSourceParams','JDBCDataSourceParams')
cd('JDBCDataSourceParams/NO_NAME_0')
set('JNDIName', java.lang.String("myDataSource_jndi"))
cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
create('myJdbcConnectionPoolParams','JDBCConnectionPoolParams')
cd('JDBCConnectionPoolParams/NO_NAME_0')
set('TestTableName','SYSTABLES')
Sample Code – Create a Domain
//Targetiing JMS and JDBC to AS
assign('JMSServer', 'myJMSServer', 'Target', 'AdminServer')
assign('JMSSystemResource.SubDeployment', 'myJmsSystemResource.myQueueSubDeployment', 'Target', 'myJMSServer')
assign('JDBCSystemResource', 'myDataSource', 'Target', 'AdminServer')
//Giving a name to the Domain
setOption('OverwriteDomain', 'true')
writeDomain('C:/bea_9.2.2/user_projects/domains/Bhavya')
Feature – Control Servers & Server Lifecycle
Starting an Administration Server Without Node Manager
Server name > Domain name > URL > username > password > path of the domain directory > block user interaction while server startup > server log > system properties > jvm arguments
wls:offline/> startServer('AdminServer','mydomain','t3://localhost:7001', 'weblogic','weblogic','c:/bea/user_projects/domains/mydomain','true’)
Feature – Control Servers & Server Lifecycle
Using Node Manager to start the Admin Server helps starting, stopping and restarting it if it fails
Starting Managed Servers and Clusters With Node Manager
startNodeManager(verbose='true',
NodeManagerHome='D:/bea10.2/wlserver_10.0/common/nodemanager', ListenPort=‘5556')
Connect(‘weblogic’,’weblogic’,’t3://localhost:7001’)
wls:/mydomain/serverConfig>start('managed1','Server','t3://localhost:7701')
Feature – Control Servers & Server Lifecycle
Using WLST and Node Manager to Manage Servers
Connect WLST to Node Manager
Start an Administration Server
Monitor the status of the server you started by entering the nmServerStatus command.
nmConnect('weblogic', 'weblogic', 'localhost', '5556','mydomain', 'c:/bea/user_projects/domains/mydomain')
wls:/nm/mydomain>nmStart('serverName')
wls:/nm/mydomain>nmServerStatus('serverName')
wls:/nm/mydomain>nmKill('serverName')
Feature – Deploying Applications
WLST deploys application to a WebLogic Server instance similar to weblogic.Deployer utility. The deploy command returns a WLSTProgress object that can be used to check the status.
path of the ear or war file
plan path (deployment plan file )
wls:/mydomain/serverConfig/Servers> deploy('demoApp', 'c:/myapps/demos/app/demoApp.ear', targets='myserver', planPath='c:/myapps/demos/app/plan/plan.xml', timeout=120000)
Feature – Deploying Applications
path of the ear or war file
returns progress state (completed)
wls:/mydomain/serverConfig> progress = redeploy('myApp' 'c:/myapps/plan.xml') wls:/mydomain/serverConfig/Servers> progress.getState() wls:/mydomain/serverConfig> undeploy('businessApp', timeout=60000)
Demo 1 – Check the status of WLS Instances
connect('weblogic','weblogic','t3://localhost:7010');
print 'Status',state('AdminServer','Server');
print 'Status',state('MS1','Server');
print 'Status',state('MS2','Server');
print 'Status',state('MS3','Server');
print 'Status',state('MS4','Server');
Demo 2 – Deploy a jar file on Managed Server
appPath='D:/WLST/netuix_common.jar'
appName='netuix_common.jar'
serverURL='t3://localhost:7010'
connect(username,password,serverURL)
deploy(appName=appName, path=appPath, targets=targets)
Demo 3 – Edit the attribute of Running Server
connect(‘weblogic’,’weblogic’,’t3://localhost:7010’)
set (‘ IdlePeriodsUntilTimeout ‘,10)
Demo 4 – Changing the Current Management Object
connect('username','password')
Demo 5 – Navigating and Displaying Configuration MBeans
connect('username','password')
Demo 6 – Fire GC for a specific server
cd('/ServerRuntimes/'+sname+'/JVMRuntime/'+sname)
Demo 7 – Edit the DataSource database password
connect() // connect to the domain
cd(‘JDBCSystemResources’)
set('PasswordEncrypted', 'PBPUBLIC')
Demo 8 – Script to monitor threads
connect() // connect to the domain domainRuntime() cd('ServerRuntimes/AdminServer/ThreadPoolRuntime/
ThreadPoolRuntime') ls() // it will list all the thread pool information
Demo 9 – Script to get the count of stuck threads
Retrieivng the StuckThreadCount using WLST.
Can be retrieved using WLST from the path
connect() // connect to the domain domainRuntime() cd(' ServerRuntimes/SERVERNAME/WorkManagerRuntimes/
DataRetirementWorkManager/ StuckThreadCount ')
Demo 10 – Start the server
startServer('AdminServer', 'mydomain',
username='weblogic', password='weblogic', block='true', timeout=300000,
serverLog='./test-right.log',
systemProperties='weblogic.ListenPort=14521',
jvmArgs='-Xms256m -Xmx512m -XX:MaxPermSize=128m')
You should specify url in the startServer command
You should specify weblogic.ListenPort in the systemProperties of the startServer() command.
Check server state and start if not running
# Connect WLST to the running server
connect('weblogic','weblogic','t3://localhost:7010');
#The following command willl print the state of the servers
print 'Status',state('AdminServer','Server');
print 'Status',state('MS1','Server');
print 'Status',state('MS2','Server');
print 'Status',state('MS3','Server');
print 'Status',state('MS4','Server');
startServer('AdminServer','mydomain','t3://localhost:7001',
'weblogic','weblogic','c:/bea/user_projects/domains/mydomain','true’)
# Disconnect the WLST from Adminserver
# Node Manager needs to be running to run this script.
connect('weblogic','weblogic','t3://localhost:7010')
slrBean = cmo.lookupServerLifeCycleRuntime('MS1')
status = slrBean.getState()
print 'Status of Managed Server is '+status
if status != "RUNNING":
start('MS1', block="true")
print 'Starting server MS1'
nmConnect('weblogic', 'weblogic', 'localhost','5556','WLST','D:/bea10.2/user_projects/domains/WLST')
a = nmServerStatus('AdminServer')
if a == "RUNNING":
connect('weblogic','weblogic','t3://localhost:7010')
print 'Successfully connected'
a = nmServerStatus('AdminServer')
print 'Starting Admin Server'
Reorder Authentication Providers WLST Script
edit() startEdit(-1,-1,'false')
cd('/SecurityConfiguration/WLST_Machine/Realms/myrealm')
set('AuthenticationProviders',jarray.array([ObjectName('Security:Name=myrealmDefaultIdentityAsserter'), ObjectName('Security:Name=myrealmDefaultAuthenticator')], ObjectName))
cd('/Security/ domainname /User/ username ') cmo.setPassword(' password ')
Edit WLS password
Connect(‘weblogic’,’weblogic’,’t3://loclahost:7001’)
from weblogic.management.security.authentication import UserPasswordEditorMBean
print "Changing password ..."
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
atnr.changeUserPassword('weblogic','weblogic','weblogic123')
Set the server mode to production while creating a domain
# read the domain template
readTemplate("D:/bea10.2/wlserver_10.0/common/templates/domains/wls.jar")
setOption(‘ServerStartMode’, ‘prod’)
writeDomain('D:/bea10.2/user_projects/domains/basicWLSDomain')
For More Information …
Documentation (for WLS 10.0) at:
http://e-docs.bea.com/wls/docs90/config_scripting/using_WLST.html
http://www.jython.org – download Jython
http://edocs.bea.com/wls/docs92/config_scripting/wlst_faq.html
Thank You Quest Time
歡迎關注本站公眾號,獲取更多信息