Yesterday one of our subscribers Miguel had asked us using comment how to configure the Unit-of-Order property using WLST script, as he was already able to create a JMSServer, JMSModule and JMS Connection Factory using a wlst script but was having an issue setting the Unit-of-Order property, hence it seemed to be a great topic to create an article on it. With below single script you can create and target following components.
- JMSServer
- JMSModule
- Queue
- ConnectionFactory
- Unit-Of-Order
As usual we have used a properties file which has all the required details in it like the JMSServer, JMSModule, Queue, ConnectionFactory names, targets name etc. This way you would not have to modify anything in your actual WLST script.
Setup JMS with Unit-Of-Order using WLST
Step1). Create a Directory somewhere in your file system like : “C:WLSTJMS“
Step2). Write a Properties file “domain.properties“ inside “C:WLSTJMS” like following:
# 1 - Connecting details server.url = t3://localhost:7001 username = weblogic password = weblogic # 2 - JMSServer details jms.server.name = My_JMSServer store.name = MyJDBCStore tragated.jms.server.name = AdminServer # 3 - SystemModule Details system.module.name = My_SystemModule tragated.system.module.name = AdminServer # 4 - ConnectionFactory Details connection.factory.name = My_ConnectionFactory connection.factory.jndi.name = My_CF # 5 - Unit Of Order Details unit.of.order.value = 1 # 6 - SubDeployment & Queue Details queue.sub.deployment.name = Sub_My_Queue queue.name = My_Queue queue.jndi.name = My_Q
Step2). Now in the same directory write the following WLST Script “JMS_Setup.py” like following:
############################################################################# # # @author Copyright (c) 2010 - 2011 by Middleware Magic, All Rights Reserved. # ############################################################################# from java.io import FileInputStream import java.lang import os import string propInputStream = FileInputStream("domain.properties") configProps = Properties() configProps.load(propInputStream) # 1 - Connecting details serverUrl = configProps.get("server.url") Username = configProps.get("username") Password = configProps.get("password") # 2 - JMSServer details jmsServerName = configProps.get("jms.server.name") storeName = configProps.get("store.name") tragatedJMSServerName = configProps.get("tragated.jms.server.name") # 3 - SystemModule Details systemModuleName = configProps.get("system.module.name") tragatedSystemModuleName = configProps.get("tragated.system.module.name") # 4 - ConnectionFactory Details connectionFactoryName = configProps.get("connection.factory.name") ConnectionFactoryJNDIName = configProps.get("connection.factory.jndi.name") # 5 - Unit Of Order Details unitOfOrderValue = configProps.get("unit.of.order.value") # 6 - SubDeployment & Queue Details queueSubDeploymentName = configProps.get("queue.sub.deployment.name") queueName = configProps.get("queue.name") queueJNDIName = configProps.get("queue.jndi.name") redirect('wlst.log','false') # 1 - Connecting to the Destination connect(Username,Password,serverUrl) edit() # 2 - JMSServer details print "================== JMSSever ===================" startEdit() cmo.createJMSServer(jmsServerName) print "Created a JMSServer !!" cd('/Deployments/'+jmsServerName) cmo.setPersistentStore(getMBean('/JDBCStores/'+storeName)) print "PersistentStore has been set for the JMSServer !!" set('Targets',jarray.array([ObjectName('com.bea:Name='+tragatedJMSServerName+',Type=Server')], ObjectName)) print "Targeted the JMSServer !!" activate() print "" # 3 - SystemModule Details print "================== SystemModule ===================" startEdit() cd('/') cmo.createJMSSystemResource(systemModuleName) print "Created a SystemModule !!" cd('/SystemResources/'+systemModuleName) set('Targets',jarray.array([ObjectName('com.bea:Name='+tragatedSystemModuleName+',Type=Server')], ObjectName)) print "Targeted the SystemModule !!" activate() print "" # 4 - ConnectionFactory Details print "================== ConnectionFactory ===================" startEdit() cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName) cmo.createConnectionFactory(connectionFactoryName) cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName+'/ConnectionFactories/'+connectionFactoryName) cmo.setJNDIName(ConnectionFactoryJNDIName) print "Created a ConnectionFactory !!" cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName+'/ConnectionFactories/'+connectionFactoryName+'/SecurityParams/'+connectionFactoryName) cmo.setAttachJMSXUserId(false) cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName+'/ConnectionFactories/'+connectionFactoryName) cmo.setDefaultTargetingEnabled(true) print "Targeted the ConnectionFactory !!" activate() print "" # 5 - Unit Of Order Details print "================== Unit Of Order ===================" startEdit() cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName+'/ConnectionFactories/'+connectionFactoryName+'/DefaultDeliveryParams/'+connectionFactoryName) cmo.setDefaultUnitOfOrder(unitOfOrderValue) print "Changed Unit Of Order !!" activate() print "" # 6 - SubDeployment & Queue Details print "================== SubDeployment & Queue ===================" startEdit() cd('/SystemResources/'+systemModuleName) cmo.createSubDeployment(queueSubDeploymentName) print "Created a SubDeployment for Queue !!" cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName) cmo.createQueue(queueName) print "Created a Queue !!" cd('/JMSSystemResources/'+systemModuleName+'/JMSResource/'+systemModuleName+'/Queues/'+queueName) cmo.setJNDIName(queueJNDIName) cmo.setSubDeploymentName(queueSubDeploymentName) cd('/SystemResources/'+systemModuleName+'/SubDeployments/'+queueSubDeploymentName) set('Targets',jarray.array([ObjectName('com.bea:Name='+jmsServerName+',Type=JMSServer')], ObjectName)) print "Targeted the Queue to the created subdeployment !!" activate() print "" cmd = "rm -f wlst.log" os.system(cmd)
Step3). Now Open a Command/Shell Prompt and then run the “setWLSEnv.sh” script to set the CLASSPATH and PATH environment variables. Run the “. ./setWLSEnv.sh” by adding two DOTs separated by a single space …..before the actual script like following : (use ‘cd’ command to move inside the <BEA_HOME>/wlserver_10.3/server/bin) then run the following command….
. ./setWLSEnv.sh
Note: Here The first DOT represents that set the Environment in the current Shell, AND the second ./ represents execute the script from the current directory.
Step4). Run the Above WLST Script like following:
java weblogic.WLST JMS_Setup.py
Following would be the Output
java weblogic.WLST JMS_Setup.py Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands ================== JMSSever =================== Created a JMSServer !! PersistentStore has been set for the JMSServer !! Targeted the JMSServer !! ================== SystemModule =================== Created a SystemModule !! Targeted the SystemModule !! ================== ConnectionFactory =================== Created a ConnectionFactory !! Targeted the ConnectionFactory !! ================== Unit Of Order =================== Changed Unit Of Order !! ================== SubDeployment & Queue =================== Created a SubDeployment for Queue !! Created a Queue !! Targeted the Queue to the created subdeployment !!
Ravish Mody