You could read a property file like described here. The basics are to use in fact Java to create a properties object and a FileInputStream to read it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #Script to load properties file. from java.io import File from java.io import FileInputStream from java.util import Properties #Load properties file in java.util.Properties def loadPropsFil(propsFil): inStream = FileInputStream(propsFil) propFil = Properties() propFil.load(inStream) return propFil |
I think the main disadvantage is that it clutters the script-code and you need to call 'myPorpFil.getProperty(key)' to get the property value.
Following the documentation you can use the commandline option '-loadProperties propertyFilename' to explicitly provide a property file. I found this actually quite clean. Every property in the file becomes automatically available as a variable in your script.
Besides that I found a teriffic blog-post on error handling in wlst. It states that with ' except NameError, e:' you can handle the reference to a variable that is not declared earlier.
I combined these two sources to come up with a script template that alows me to provide property files for different target environments as a commandline option, while detecting if properties are provided. So let's assume you create a porpererty file named for instance 'localhost.properties' like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ############################################################################# # Properties voor localhost Integrated Weblogic # # @author Martien van den Akker, Darwin-IT Professionals # @version 1.0, 2016-04-06 # ############################################################################# # # Properties voor localhost adminUrl = localhost: 7101 adminUser = weblogic adminPwd = welcome1 clustername = LocalCluster # Generieke properties voor het creeeren van JMS componenten #jmsFileStoresBaseDir=/app/oracle/config/cluster_shared/filestore/ jmsFileStoresBaseDir = c: / Data / JDeveloper / SOA / filestore #Filestore 01 ... |
Then you can use that with the following script, named for instance 'createJMSServersWithFileStoreV2.py':
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ############################################################################# # Create FileStores and JMS Servers # # @author Martien van den Akker, Darwin-IT Professionals # @version 1.0, 2016-04-06 # ############################################################################# # Modify these values as necessary import sys, traceback scriptName = 'createJMSServersWithFileStoreV2.py' # # def usage(): print 'Call script as: ' print 'Windows: wlst.cmd' + scriptName + ' -loadProperties localhost.properties' print 'Linux: wlst.sh' + scriptName + ' -loadProperties environment.properties' print 'Property file should contain the following properties: ' print "adminUrl='localhost:7101'" print "adminUser='weblogic'" print "adminPwd='welcome1'" def main(): try : #Connect to administration server print '\nConnect to AdminServer via ' + adminUrl + ' with user ' + adminUser connect(adminUser, adminPwd, adminUrl) ... except NameError, e: print 'Apparently properties not set.' print "Please check the property: " , sys.exc_info()[ 0 ], sys.exc_info()[ 1 ] usage() except : apply (traceback.print_exception, sys.exc_info()) stopEdit( 'y' ) exit(exitcode = 1 ) #call main() main() exit() |
You can call it like 'wlst createJMSServersWithFileStoreV2.py -loadProperties localhost.properties'. If you don't provide a property file you'll get:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | e:\wls>wlst createJMSServersWithFileStoreV2.py Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Apparently properties not set. Please check the properties: exceptions.NameError adminUrl Call script as: Windows: wlst.cmdcreateJMSServersWithFileStoreV2.py -loadProperties localhost.properties Linux: wlst.shcreateJMSServersWithFileStoreV2.py -loadProperties environment.properties Property file should contain the following properties: adminUrl='localhost:7101' adminUser='weblogic' adminPwd='welcome1' Exiting WebLogic Scripting Tool. e:\wls> |
Pretty clean. You could even use the 'except NameError, e:' construct to conditionally execute code when properties are set by ignoring/handling the situation when particular properties are intentionally not provided.
No comments :
Post a Comment