Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WLST: WebLogic’s
Swiss Army Knife
Simon Haslam
Consultant/founder of Veriton & co-founder O-box
FMW infra: high availability, security, performance
Chair ...
 What is WLST?
 WLST & Management Beans Overview
 Language Features
WLST Overview
 Jython = Python running on JVM
 JMX are management APIs for
Java (implemented as Mbeans)
 WLST provides ...
Getting started
 Usually connect to Admin Server ‘online’
 Run wlst.sh [.cmd] or use Windows short-cut
◦ connect(<userna...
 What is WLST?
 WLST & Management Beans Overview
 Language Features
Management Beans Overview
 All WebLogic servers
◦ Runtime WebLogic MBeans
◦ JVM MBeans
 Admin Server only
◦ Domain Runti...
System Change Management
 edit()
 startEdit()
 save()
 activate() <= prod. mode releases lock
◦ or undo()
 Configurat...
MBean Access
cd()
ls()
easeSyntax()
find(‘ListenAddress’);
wls:/wls1213test1/serverConfig/Machines/think-x220> find('listenAddress')
Finding "lis...
Online & Offline
 Online – connecting to Admin Server over JMX which
in turn updates config.xml etc
 Offline – using WLS...
Online vs Offline
 Pros & Cons:
◦ Offline can do before domain is running, against shared dir from a different server etc...
edit()
startEdit()
PREFIX='WCCPDEV'
NOTE=‘…'
def update_user(DS, SCHEMA, NOTE):
cd('/JDBCSystemResources/'+DS)
cmo.setNote...
 What is WLST?
 WLST & Management Beans Overview
 Language Features
Print and Concatenation
print ‘Processing ’ + server + ‘...’
Procedures & Libraries
Order is important – procedures/functions must
have been defined before use
Indentation is used to ...
Loops
for I in range(1, 100):
print I
...
While I = ‘something’:
print J
...
Conditions
if <condition> == <value> :
e.g.
if server == ‘AdminServer’:
print ‘Skipping’
else:
print ‘Doing something’
Not...
Parameter Parsing (simple)
 Use argv[n]
import sys
# script takes a single parameter for properties file
try:
loadPropert...
Parameter Parsing (flexible)
 Use getopt
import sys, getopt
def usage():
print "Usage: setup_cluster.py -u adminuser -c
p...
Parameter Parsing (flexible – cont.)
try:
opts, args = getopt.getopt(sys.argv[1:],
"u:c:t:a:p:s:e:",["adminuser=", "creden...
Parameter Parsing (flexible – cont.)
for opt, arg in opts:
if opt == "-u":
adminUser = arg
elif opt == "-c":
adminCred = a...
Passwords / encryption
When you record you’ll get:
setEncrypted('Password', 'Password_456…',
‘…/Script456…Config', ‘…/Scri...
Invocation
 CLASS_PATH, esp some layered products
 Slower first time
 Maybe write a cleaner wrapper script of your own
...
Tools
 Text editors
◦ vi (of course)
◦ Notepad++ has syntax highlighting for .py by default
◦ Sublime Text has syntax hig...
Questions?
@simon_haslam
My blog: http://simonhaslam.co.uk
http://veriton.com
http://o-box.com
WLST: WebLogic's Swiss Army Knife
Upcoming SlideShare
Loading in …5
×

WLST: WebLogic's Swiss Army Knife

2,171 views

Published on

WebLogic Scripting Tool, or WLST, is a command line utility that enables you to fully configure and control WebLogic Server – as much, and more, than you can do through the web-based WebLogic console. You might think of it as the SQL*Plus equivalent for WebLogic but in many respects it’s much more powerful as you have the full Python programming language at your disposal. It allows you to do the simple, but handy, tasks like starting a server and creating data sources, right through to creating clusters and building a complete domain. These commands can then be used to automate WebLogic administration, saving time, ensuing consistency and reducing risk.

This presentation was delivered serveral times around 2010-2012, including this time on the 2012 Nordic ACE Director Tour.

Published in: Technology
  • Be the first to comment

WLST: WebLogic's Swiss Army Knife

  1. 1. WLST: WebLogic’s Swiss Army Knife
  2. 2. Simon Haslam Consultant/founder of Veriton & co-founder O-box FMW infra: high availability, security, performance Chair of UKOUG Middleware SIG Middleware focus, but interested from hardware upwards
  3. 3.  What is WLST?  WLST & Management Beans Overview  Language Features
  4. 4. WLST Overview  Jython = Python running on JVM  JMX are management APIs for Java (implemented as Mbeans)  WLST provides front-end to JMX ◦ a little like ‘SQL*Plus for WebLogic’  Since 12c admin functions possible over RESTful interface WebLogic MBeans Jython WebLogic extensions WLST REST
  5. 5. Getting started  Usually connect to Admin Server ‘online’  Run wlst.sh [.cmd] or use Windows short-cut ◦ connect(<username>,<password>,<url>)
  6. 6.  What is WLST?  WLST & Management Beans Overview  Language Features
  7. 7. Management Beans Overview  All WebLogic servers ◦ Runtime WebLogic MBeans ◦ JVM MBeans  Admin Server only ◦ Domain Runtime MBeans ◦ “edit” MBeans
  8. 8. System Change Management  edit()  startEdit()  save()  activate() <= prod. mode releases lock ◦ or undo()  Configuration lock held by user (not tool) so WLST startEdit will show that the domain is being edited in the WLS console
  9. 9. MBean Access cd() ls()
  10. 10. easeSyntax() find(‘ListenAddress’); wls:/wls1213test1/serverConfig/Machines/think-x220> find('listenAddress') Finding "listenAddress" in all registered MBean instances ... /Servers/AdminServer ListenAddress /Servers/AdminServer/CoherenceMemberConfig/AdminServer UnicastListenAddress null /Machines/think-x220/NodeManager/think-x220 ListenAddress localhost /Servers/ms1 ListenAddress /Servers/ms1/CoherenceMemberConfig/ms1 UnicastListenAddress null
  11. 11. Online & Offline  Online – connecting to Admin Server over JMX which in turn updates config.xml etc  Offline – using WLST libraries that updates config.xml directly Never connect offline if the Admin Server is running!
  12. 12. Online vs Offline  Pros & Cons: ◦ Offline can do before domain is running, against shared dir from a different server etc ◦ Online has more features available  If you’re doing a full build you’re probably best doing the base domain offline to give you enough to start up a secure AdminServer then do the rest online (IMO!)  You may want to use WLST scripts/libraries after the domain is live too, hence good to write for online usage
  13. 13. edit() startEdit() PREFIX='WCCPDEV' NOTE=‘…' def update_user(DS, SCHEMA, NOTE): cd('/JDBCSystemResources/'+DS) cmo.setNotes(NOTE) cd('JDBCResource/'+DS+'/JDBCDriverParams/'+DS+'/Properties/'+DS+'/Properties/user') cmo.setValue(SCHEMA) update_user('mds-CustomPortalDS', PREFIX+‘_MDS', NOTE) update_user('WebCenter-CustomPortalDS', PREFIX+‘_WEBCENTER', NOTE) update_user('Activities-CustomPortalDS', PREFIX+‘_ACTIVITIES', NOTE) activate()
  14. 14.  What is WLST?  WLST & Management Beans Overview  Language Features
  15. 15. Print and Concatenation print ‘Processing ’ + server + ‘...’
  16. 16. Procedures & Libraries Order is important – procedures/functions must have been defined before use Indentation is used to show nesting (not {}) One approach for ‘libraries’ is: execfile('fmw_utilities.py')
  17. 17. Loops for I in range(1, 100): print I ... While I = ‘something’: print J ...
  18. 18. Conditions if <condition> == <value> : e.g. if server == ‘AdminServer’: print ‘Skipping’ else: print ‘Doing something’ Not a great example – you wouldn’t usually test based on name
  19. 19. Parameter Parsing (simple)  Use argv[n] import sys # script takes a single parameter for properties file try: loadProperties(sys.argv[1]); except: sys.exit('ERROR! Usage: '+sys.argv[0]+' <properties- file>n'); ...
  20. 20. Parameter Parsing (flexible)  Use getopt import sys, getopt def usage(): print "Usage: setup_cluster.py -u adminuser -c password -t protocol -a adminserver -p port -s start_range -e number_of_ips_to_check"
  21. 21. Parameter Parsing (flexible – cont.) try: opts, args = getopt.getopt(sys.argv[1:], "u:c:t:a:p:s:e:",["adminuser=", "credential=", "adminProtocol=", "adminServer=","adminserverPort=", "startRange=","endRange="]) except: print “Unknown argument passed" usage() sys.exit(2)
  22. 22. Parameter Parsing (flexible – cont.) for opt, arg in opts: if opt == "-u": adminUser = arg elif opt == "-c": adminCred = arg elif opt == "-t": adminProtocol = arg ...
  23. 23. Passwords / encryption When you record you’ll get: setEncrypted('Password', 'Password_456…', ‘…/Script456…Config', ‘…/Script456…Secret') You probably want something more visible, e.g. cmo.setPassword( encrypt(APP_PASS, DOMAIN_BASE+'/'+DOMAIN_NAME) ) cmo.setCustomIdentityKeyStorePassPhraseEncrypted( encrypt(SSL_IDENTITY_PASS, DOMAIN_BASE+'/'+DOMAIN_NAME) )
  24. 24. Invocation  CLASS_PATH, esp some layered products  Slower first time  Maybe write a cleaner wrapper script of your own  (If you’re clever you might embed WLST in Java progs)
  25. 25. Tools  Text editors ◦ vi (of course) ◦ Notepad++ has syntax highlighting for .py by default ◦ Sublime Text has syntax highlighting for .py  Recently discovered: WLST plug-in with tab/code completion: https://github.com/Joelith/sublime-wlst  WLS Console recording function  Oracle Enterprise Pack for Eclipse ◦ Modern IDE supporting WLST project etc
  26. 26. Questions? @simon_haslam My blog: http://simonhaslam.co.uk http://veriton.com http://o-box.com

×