46
WLST Bhavya Siddappa May 30, 2008

WLST

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: WLST

WLST

Bhavya Siddappa

May 30, 2008

Page 2: WLST

Topics of Discussion

• What is WLST?

• Modes of Operation

• Features

• Online and Offline WLST

• Advantages of WLST

• MBean

• Create Domain through WLST

• Demo

• FAQs

Page 3: WLST

Puzzle

1. WLST

2. Python

3. Jython

4. Mode of WLST Interaction

5. Is WLST Case Sensitive

Interactive, Scripting OOPS Language True Weblogic Scripting Tool Embedded, Script, Interactive

Match the Following:

Page 4: WLST

Let’s Check out what's right and what's wrong!

• WLST - Weblogic Scripting Tool

• Python - OOPS Language

• Jython - Embedded scripting language

• Mode of WLST Interaction - Interactive, Scripting and Embedded

• WLST Case Sensitive - true

Page 5: WLST

What is WLST?

• Monitor, Manage & Configure WebLogic Server (online/offline)• Based on Jython • Similar to any programming language • Built on Jython 2.1

Simple & clear syntax

Use jython libraries

Fast in performance

Platform Independent• Includes capabilities of

weblogic.Admin weblogic.Deployer wlconfig Ant Tasks config wizard(silent mode)

Page 6: WLST

Modes of Operation

1. Interactive

Navigation/Interrogation

Prototyping command syntax

Record Interactions to a script to play it later

Page 7: WLST

Modes of Operation

2. Script

Sequence of commands via

file

Use loops, flow control,

conditional statements, variables

Page 8: WLST

Modes of Operation

3. Embedded

Uses Jython libraries

Able to Call WLST interpreter from within your Java code

Page 9: WLST

Executing WLST Script File

Different ways:1. java weblogic.WLST filePath.py

2. execfile (filePath.py)

c:\> java weblogic.WLST c:/temp/example.py

c:\> java weblogic.WLSTInitializing WebLogic Scripting Tool (WLST) .........wls:/(offline)> execfile('c:/temp/example.py')starting the script ...

Page 10: WLST

Using WLST- Online

WLST is a JMX client

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

Page 11: WLST

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

Page 12: WLST

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')

Page 13: WLST

Using WLST- Help

Display help information for WLST commands by entering the help command:

help(‘online’)

help(‘offline’)

help('get*')

wls:/mydomain/serverConfig> help('disconnect')

Page 14: WLST

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.

Page 15: WLST

Configuration MBean Hierarchy

Configuration MBean Hierarchy

Domain MBean (root)

|- - - 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)

Page 16: WLST

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

Page 17: WLST

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

Page 18: WLST

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)

closeTemplate ()

Updating an Existing Domain (Offline) Open an existing domain for update - readDomain(domainDirName) Extend the current domain - addTemplate(templateFileName) Save the domain - updateDomain()

Page 19: WLST

Sample Code – Create a Domain

readTemplate(‘d:/bea_9.2/weblogic92/common/templates/domains')

// Create Admin server with SSL enabled

cd('Servers/AdminServer')

set('ListenAddress','')

set('ListenPort', 7001)

//Setting password

cd('/')

cd('Security/base_domain/User/weblogic')

cmo.setPassword('weblogic')

CONTD..

Page 20: WLST

Sample Code – Create a Domain

//Creating JMS Server

cd('/')

create('myJMSServer', 'JMSServer')

cd('/')

create('myJmsSystemResource', 'JMSSystemResource')

cd('JMSSystemResource/myJmsSystemResource/JmsResource/NO_NAME_0')

//Creating JMS Queue

myq=create('myQueue','Queue')

myq.setJNDIName('jms/myqueue')

myq.setSubDeploymentName('myQueueSubDeployment')

cd('/')

cd('JMSSystemResource/myJmsSystemResource')

create('myQueueSubDeployment', 'SubDeployment')

CONTD..

Page 21: WLST

Sample Code – Create a Domain

// Creating Datasource

cd('/')

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')

cd('Property/user')

cmo.setValue('PBPUBLIC')

CONTD..

Page 22: WLST

Sample Code – Create a Domain

//Creating JDBC Pool

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')

CONTD..

Page 23: WLST

Sample Code – Create a Domain

//Targetiing JMS and JDBC to AS

cd('/')

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')

closeTemplate()

exit()

Page 24: WLST

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’)

Page 25: WLST

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')

Page 26: WLST

Feature – Control Servers & Server Lifecycle

Using WLST and Node Manager to Manage Servers

Start Node Manager

Connect WLST to Node Manager

Start an Administration Server

Monitor the status of the server you started by entering the nmServerStatus command.

Stop the server

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')

Page 27: WLST

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.

Deploy

application name

path of the ear or war file

target

plan path (deployment plan file )

options

wls:/mydomain/serverConfig/Servers> deploy('demoApp','c:/myapps/demos/app/demoApp.ear', targets='myserver',planPath='c:/myapps/demos/app/plan/plan.xml', timeout=120000)

Page 28: WLST

Feature – Deploying Applications

Redeploy

application name

path of the ear or war file

returns progress state (completed)

Undeploy:

wls:/mydomain/serverConfig> progress = redeploy('myApp''c:/myapps/plan.xml')wls:/mydomain/serverConfig/Servers> progress.getState()

wls:/mydomain/serverConfig> undeploy('businessApp', timeout=60000)

Page 29: WLST

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');disconnect();

Page 30: WLST

Demo 2 – Deploy a jar file on Managed Server

appPath='D:/WLST/netuix_common.jar' appName='netuix_common.jar' targets='MS1' username=’weblogic' password=’weblogic' serverURL='t3://localhost:7010' connect(username,password,serverURL) edit() startEdit() deploy(appName=appName, path=appPath, targets=targets) save() activate()

Page 31: WLST

Demo 3 – Edit the attribute of Running Server

connect(‘weblogic’,’weblogic’,’t3://localhost:7010’) ls() cd(’Servers’) cd(‘MS1’) ls() edit() startEdit()

set (‘IdlePeriodsUntilTimeout‘,10) save() activate()

Page 32: WLST

Demo 4 – Changing the Current Management Object

connect('username','password') cmo cd('Servers') cmo cd('myserver') cmo

Page 33: WLST

Demo 5 – Navigating and Displaying Configuration MBeans

connect('username','password') ls() cd('Servers') ls()cd('myserver') ls()

Page 34: WLST

Demo 6 – Fire GC for a specific server

cd('/ServerRuntimes/'+sname+'/JVMRuntime/'+sname)cmo.runGC()

Page 35: WLST

Demo 7 – Edit the DataSource database password

connect() // connect to the domain cd(‘Servers/MS1’)

edit()cd(‘JDBCSystemResources’)

cd(‘samplesDataSource’)cd(‘JDBCResource’)

cd(‘samplesDataSource’) cd(‘JDBCDriverParams’)cd(‘samplesDataSource’)

set('PasswordEncrypted', 'PBPUBLIC')Save()

Activate()

Page 36: WLST

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

Page 37: WLST

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 ')

Page 38: WLST

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')To summarize,

a) You should specify url in the startServer commandOR

a) You should specify weblogic.ListenPort in the systemProperties of the startServer() command.

Page 39: WLST

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');

serverRuntime()

a = get('State')

if a == 'RUNNING'

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

disconnect();

Page 40: WLST

# Node Manager needs to be running to run this script.

connect('weblogic','weblogic','t3://localhost:7010')

domainRuntime()

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'

Page 41: WLST

nmConnect('weblogic', 'weblogic', 'localhost','5556','WLST','D:/bea10.2/user_projects/domains/WLST')

a = nmServerStatus('AdminServer')

print a

b = 1

while b == 1:

if a == "RUNNING":

b = 0

connect('weblogic','weblogic','t3://localhost:7010')

print 'Successfully connected'

else:

a = nmServerStatus('AdminServer')

print 'Starting Admin Server'

Page 42: WLST

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))

save()activate()

cd('/Security/domainname/User/username')cmo.setPassword('password')

Page 43: WLST

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')

Page 44: WLST

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’)

# create a domain

writeDomain('D:/bea10.2/user_projects/domains/basicWLSDomain')

# close the template

closeTemplate()

Page 45: WLST

For More Information …

Documentation (for WLS 10.0) at:

http://e-docs.bea.com/wls/docs90/config_scripting/using_WLST.html

UseFul Links

http://www.jython.org – download Jython

FQA

http://edocs.bea.com/wls/docs92/config_scripting/wlst_faq.html

Page 46: WLST

Thank You

Quest Time