SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
WLST: WebLogic’s
Swiss Army Knife
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
 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 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
Getting started
 Usually connect to Admin Server ‘online’
 Run wlst.sh [.cmd] or use Windows short-cut
◦ connect(<username>,<password>,<url>)
 What is WLST?
 WLST & Management Beans Overview
 Language Features
Management Beans Overview
 All WebLogic servers
◦ Runtime WebLogic MBeans
◦ JVM MBeans
 Admin Server only
◦ Domain Runtime MBeans
◦ “edit” MBeans
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
MBean Access
cd()
ls()
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
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!
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
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()
 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 show nesting (not {})
One approach for ‘libraries’ is:
execfile('fmw_utilities.py')
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 a great example –
you wouldn’t usually
test based on name
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');
...
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"
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)
Parameter Parsing (flexible – cont.)
for opt, arg in opts:
if opt == "-u":
adminUser = arg
elif opt == "-c":
adminCred = arg
elif opt == "-t":
adminProtocol = arg
...
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) )
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)
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
Questions?
@simon_haslam
My blog: http://simonhaslam.co.uk
http://veriton.com
http://o-box.com

Más contenido relacionado

Más de Simon Haslam

Java & SOA Cloud Service for Fusion Middleware Administrators
Java & SOA Cloud Service for Fusion Middleware AdministratorsJava & SOA Cloud Service for Fusion Middleware Administrators
Java & SOA Cloud Service for Fusion Middleware Administrators
Simon Haslam
 

Más de Simon Haslam (20)

Platform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle CloudPlatform Provisioning Automation for Oracle Cloud
Platform Provisioning Automation for Oracle Cloud
 
Terrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning AutomationTerrraform meet Oracle Cloud: Platform Provisioning Automation
Terrraform meet Oracle Cloud: Platform Provisioning Automation
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with Oracle
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
Oracle SOA Cloud - Skanska Customer Journey
Oracle SOA Cloud - Skanska Customer JourneyOracle SOA Cloud - Skanska Customer Journey
Oracle SOA Cloud - Skanska Customer Journey
 
Tips & Tricks for Oracle PaaS Admins
Tips & Tricks for Oracle PaaS AdminsTips & Tricks for Oracle PaaS Admins
Tips & Tricks for Oracle PaaS Admins
 
Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JET
 
JET Hybrid Mobile Apps - taster for Oracle CodeOne
JET Hybrid Mobile Apps - taster for Oracle CodeOneJET Hybrid Mobile Apps - taster for Oracle CodeOne
JET Hybrid Mobile Apps - taster for Oracle CodeOne
 
Delivering Mobile Apps to the field using Oracle
Delivering Mobile Apps to the field using OracleDelivering Mobile Apps to the field using Oracle
Delivering Mobile Apps to the field using Oracle
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
Connecting Oracle Cloud to your Data Centre (Part A)
Connecting Oracle Cloud to your Data Centre (Part A)Connecting Oracle Cloud to your Data Centre (Part A)
Connecting Oracle Cloud to your Data Centre (Part A)
 
Running SOA in the Cloud: SOA CS for SOA Suite Customers
Running SOA in the Cloud: SOA CS for SOA Suite CustomersRunning SOA in the Cloud: SOA CS for SOA Suite Customers
Running SOA in the Cloud: SOA CS for SOA Suite Customers
 
Tips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud ServiceTips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud Service
 
SOA & WebLogic - Lift & Shift to the Cloud
SOA & WebLogic - Lift & Shift to the CloudSOA & WebLogic - Lift & Shift to the Cloud
SOA & WebLogic - Lift & Shift to the Cloud
 
Driving DevOps for Oracle with the orawls Puppet Modules
Driving DevOps for Oracle with the orawls Puppet ModulesDriving DevOps for Oracle with the orawls Puppet Modules
Driving DevOps for Oracle with the orawls Puppet Modules
 
Experiences of SOACS
Experiences of SOACSExperiences of SOACS
Experiences of SOACS
 
3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle Cloud3 Ways to Connect to the Oracle Cloud
3 Ways to Connect to the Oracle Cloud
 
SSL Everywhere!
SSL Everywhere!SSL Everywhere!
SSL Everywhere!
 
Oracle Traffic Director - a vital part of your Oracle infrastructure
Oracle Traffic Director - a vital part of your Oracle infrastructureOracle Traffic Director - a vital part of your Oracle infrastructure
Oracle Traffic Director - a vital part of your Oracle infrastructure
 
Java & SOA Cloud Service for Fusion Middleware Administrators
Java & SOA Cloud Service for Fusion Middleware AdministratorsJava & SOA Cloud Service for Fusion Middleware Administrators
Java & SOA Cloud Service for Fusion Middleware Administrators
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

WLST: WebLogic's Swiss Army Knife

  • 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.  What is WLST?  WLST & Management Beans Overview  Language Features
  • 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. Getting started  Usually connect to Admin Server ‘online’  Run wlst.sh [.cmd] or use Windows short-cut ◦ connect(<username>,<password>,<url>)
  • 6.  What is WLST?  WLST & Management Beans Overview  Language Features
  • 7. Management Beans Overview  All WebLogic servers ◦ Runtime WebLogic MBeans ◦ JVM MBeans  Admin Server only ◦ Domain Runtime MBeans ◦ “edit” MBeans
  • 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
  • 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. 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. 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. 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.  What is WLST?  WLST & Management Beans Overview  Language Features
  • 15. Print and Concatenation print ‘Processing ’ + server + ‘...’
  • 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. Loops for I in range(1, 100): print I ... While I = ‘something’: print J ...
  • 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. 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. 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. 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. 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. 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. 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. 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.