Search This Blog

Sunday, January 31, 2010

Configuring WorkManager using WLST


The WorkManager configuration can be possible only when you navigate on SelfTuning tree. After navigating with cding to SelfTuning MBean hierarcy. You can list out the SelfTuning tree that consists of the following branch trees, which are allowed us to created new MBeans using create command.
  1. ContextRequestClasses
  2. FairShareRequestClasses
  3. ResponseTimeRequestClasses
  4. Capacities
  5. MaxThreadsConstraints
  6. MinThreadsConstraints
  7. WorkManagers
WebLogic WorkManager Threadpool configurations
Here I am with few examples of my experiments with WorkManager and its constraints or Request Classess. To configure a new Global or Server instances wise or Cluster-wide Workmanager using online WLST you need to follow the below steps:

1. connect to the Administration Server.
2. switch to edit tree
3. configure a class or constraint for the WorkManager.
4. set the target as per your need to a server or to a cluster.
5. configure a new workmananger
6. navigate to the newly configured WorkManager MBean and set the constraint or class which created in the step 3.
7. target the workmanager to a server instance or to a cluster as per the need.
8. Save the changes and activate them.
9. While performing the above steps the script can throw WLST Exceptions such as BeanAlreadyExistsException handle them

We can configure a WorkManager and its related constraint or Request classes in two modes 1. online WLST 2. offline WLST The only difference here is targeting the WorkManger instance to a Server or a cluster, Online WLST requires
set('Targets',jarray.array([ObjectName('com.bea:Name=appClstr,Type=Cluster')], ObjectName))
set('Targets',jarray.array([ObjectName('com.bea:Name=app1,Type=Server')], ObjectName))

WLST MaxThreadsConstraints

Now let us see the example for configuring a MaxThreadsConstraints using Online WLSTHere we are going to set the Count value as per the need in the runtime for the MaxThreadConstraint. Better you can also chance to target to Server instance instead of Cluster.
#********************************************************************************
# Configure a WorkManager with  MaxThreadsConstrain
#********************************************************************************
from weblogic.descriptor import BeanAlreadyExistsException


try:
  connect('adminuser','adminpasswd','t3://adminHost:adminPort')
  
  edit()
  startEdit()
  c=input('Enter the Max Thread Count: ')
  mtc='MaxThreadsConstraint'+str(c)
  cd('/SelfTuning/wd1')
  cmo.createMaxThreadsConstraint(mtc)
  cd('/SelfTuning/wd1/MaxThreadsConstraints/'+mtc)
  cmo.setCount(c)
  set('Targets',jarray.array([ObjectName('com.bea:Name=appClstr,Type=Cluster')], ObjectName))
  cd('/SelfTuning/wd1')
  wm = cmo.createWorkManager('pwm1')
  cd('/SelfTuning/wd1/WorkManagers/pwm1')
  set('Targets',jarray.array([ObjectName('com.bea:Name=appClstr,Type=Cluster')], ObjectName))
  cmo.setMaxThreadsConstraint(getMBean('/SelfTuning/wd1/MaxThreadsConstraints/'+mtc))
  save()
  activate()
except (WLSTException, BeanAlreadyExistsException), e:
  print 'Error in script:', e
  cancelEdit('y')
else:
 disconnect()
 

Then the outcome looks like below:
wls:/offline> execfile('ConfigWM1.py')
Connecting to t3://adminHost:port with userid system ...
Successfully connected to Admin Server 'padmin' that belongs to domain 'wd1'.
...


You already have an edit session in progress and hence WLST will
continue with your edit session.

Starting an edit session ...
Started edit session, please be sure to save and activate your
changes once you are done.
Enter the Max Thread Count: 45
Saving all your changes ...
Saved all your changes successfully.
Activating all your changes, this may take a while ...
The edit lock associated with this edit session is released
once the activation is completed.
Activation completed
Disconnected from weblogic server: padmin

Capacity Constraint

Now let us see the example for configuring a capacity constraint using online WLST


#Capacity constraint
#********************************************************************************
from weblogic.descriptor import BeanAlreadyExistsException

try:
  # replace following values 
  connect('adminuser','adminpasswd','t3://adminHost:adminPort')
  edit()
  startEdit()
  cd('/SelfTuning/wd1')
  cmo.createCapacity('pcap2')
  cd('Capacities/pcap2')
  set('Count',10)
  set('Notes','This will set Capacity constraint')
  set('Targets',jarray.array([ObjectName('com.bea:Name=appClstr,Type=Cluster')], ObjectName))
  cd('/SelfTuning/wd1')
  wm = cmo.createWorkManager('pwm2')
  cd('/SelfTuning/wd1/WorkManagers/pwm2')
  set('Targets',jarray.array([ObjectName('com.bea:Name=appClstr,Type=Cluster')], ObjectName))
  cmo.setCapacity(getMBean('/SelfTuning/wd1/Capacities/pcap2'))
  save()
  activate()
except (WLSTException, BeanAlreadyExistsException), e:
  print 'Error in script:', e
  cancelEdit('y')
else:
 disconnect()

The output will be like this:
wls:/offline>  execfile('ConfigWM2.py')
Connecting to t3://adminHost:port with userid system ...
Successfully connected to Admin Server 'padmin' that belongs to domain 'wd1'.
....

Starting an edit session ...
Started edit session, please be sure to save and activate your
changes once you are done.
Saving all your changes ...
Saved all your changes successfully.
Activating all your changes, this may take a while ...
The edit lock associated with this edit session is released
once the activation is completed.
Activation completed
Disconnected from weblogic server: padmin
Double check your changes for WorkManager done success on Admin Console. Please write back your feedback and comments on this post... -->

Wednesday, January 27, 2010

WLST Offline vs WLST Online

Hey Middleware automation expert, Welcome to my Post. Working with WLST we have two different sections of commands available they are defined as: 1. Off-line WLST (default shell)
2. Online WLST mode (after connecting admin)

 

WLST Offline
The WLST offline configuration commands analogous to the Configuration Wizard. You just need to know the navigation on the WebLogic configuration MBean trees, modify the MBean attribute values. Internally this WLST offline commands works on WebLogic domain Configuration Framework, the Configuration Wizard also uses it.
Consistent results when using either tool read and write access to the configuration data that is persisted in the domain’s config directory or in a domain template JAR

These WLST offline commands intended to create a domain or modify a non-running domain. Used during WLS install to create samples domains

WLST Online
The WLST online commands are analogous to the Administration Console changes after connecting to admin server. WLST Online mode is a Java Management Extension (JMX) client it allow you to interact with in-memory runtime Management Beans (MBeans). In the online administrator intended use the runtime management tools: configuration,
management, deployment, monitoring.
When you use connect() command at offline it will transfer your prompt to ServerConfig that indicates online command mode. Where the commands will execute directly on running/ active resources.
The following table shows the major differences between
Offline, Online commands:

WLST Offline vs WLST Online


WLST Offline


WLST Online


1.WLST Offline commands can do:

a) Create/modify domain templates

b) Create domains

c) Extend an existing domains by access and modify the configuration for
an offline domain



2. WLST Offline mode commands can’t do:

a) View runtime performance data

b) Modify security data


1. WLST Online commands can do:

a) Change configuration when servers are in RUNNING state

b) View runtime data for monitoring various runtime MBeans performances

c) Deploy applications targeting to Servers or clusters

d) Start and stop servers or cluster members.



2. WLST Online commands can’t do the following:

a) Create a new domain (must be offline mode) you can only update an
existing domain configuration.


3. Default interactive mode will be in offline mode


3. The offline connect() command changes to online, disconnect() command
used to come back to offline. Mostly script mode is useful.


4. Configuring resources like JDBC, JMS can be assigned with assign()
command to targets.


4. Configuring resources required set command with Targets as argument and
committing the changes with save(), activate() commands.


5. The Offline commands are executed faster

5. Online commands are slower because they have to interact with live objects.

Earlier this table was big aquard to look now it reshaped with proper wraper, that overcome blogger table blanks issue.


Hope this table helped you!! Keep writing your feedback comments!!

Popular Posts