You are on page 1of 7

10/19/2019 WLST by Examples: WLST Errors and Exceptions

More C

Writing a WLST script is an art of Administration. You will be using Python code, Jython scripting for building WebLogic platforms SO
Portals, WebCenter, FMW. WLST is a Weapon in the hands of Middleware Engineers, Most of the WLST automations makes life easy fo
WebLogic Administrator, Configuring, Monitoring JDBC, JMS, JVM, Threads made simple.

Home Basics Configurations JMS JDBC Monitoring Tricks & Tips Deploy SOA Other Features Multitenancy

Online work calendars

Unlike traditional calendars, they always


re ect your most up-to-date plans. Try
Free
Wrike

Search This Blog About Me

Search Pavan Devarakonda [PD]

View my complete profile


Oracle Fusion Middleware Administration Course

Oracle Fusion Middleware Administration Course


OFMW Admin Course

T h u r s d a y, O c t o b e r 2 7 , 2 0 11

WLST Errors and Exceptions


When first time you started using WLST you might get many of these Python based WLST Errors. Here I had collected
few of them which are very simple to handle them with care. Only thing you need to understand when what kind of
errors raises, and what need to do to handle them. When there is error on your flow of WLST Script or prompt don't be
panic, relax for a moment then after a while take a deep breath and focus on your error and map with one of the
following and do the required workaround.

In Jython we have issubclass() to check superclass, subclass relation we can verify class relationship. You can find
parent-child relationship with it. As per my understanding the Error hierarchy can be defined in WLST(Jython) as
follows:

This WLST(Jython) Error tree I prepared and posted for your reference, so that you can make your script in perfect
manner, here you can find what is going wrong why it is happen while working out your script.

try:
# WLST code Block
# perform some tasks that may throw an exception
except ExceptionType, ExceptionVar:
# WLST code or
# perform some exception handling
finally:
# perform tasks that must always be completed (Will be performed before the exception is # raised.)
else:
# execute code that must always be invoked

The pass statement in WLST

While writing WLST scripts, there are some situations where you need ‘do nothing’ statement syntactically. That is
provided by the pass statement. When you start working on Exception handling this statement will be the first
experimenting statement for you.

WLST raise statement

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 1/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions
In WLST raise is used to generate or invoke an exception condition. The syntax of this statement allows three comma
separated expressions which are optional. If no expression is present, WLST attempt to re-raise the last exception
that was raised. This raise statement we can use when we need exception handling with robust scripts. When you pass
the expressions to the raise statement, the first two expressions are evaluated to get the objects. These objects are
then used to determine the type and value of the exception. Omitted expressions are treated as None. The third
expression could be used for traceback objects.

wls:/offline> try:
... raise Exception('SituationalResponse')
...except Exception, e:
... print e
...
java.lang.Exception: SituationalResponse

SyntaxError
This you cannot be handled with the try-except block, because it will be thrown when your syntax is not in properly
arranged, that is in the statement missing indentation or improper arguments. SyntaxError could be raised when the
script lines are given for parsing, it will do token by token parsing wherever the improper syntax given WLST Shell
points with cap char under the token.

Now let us see the sample indentation issue that raises the Syntax Error.

wls:/offline>; try:
...connect('system','weblogic103','t3://adminhost:adminport')
Traceback (innermost last):
(no code object)
at line 0
File
"", line 2
connect('system','weblogic103','t3://adminhost:adminport')
^
SyntaxError: invalid syntax

Another option for Syntax Error


This Error I have observed when I tried to migrate the WebLogic domain with createDomain() command.

wls:/offline/wdomain>createDomain('/home/backup/olddomain.jar', '/home/otherusr/domains/newdomain',’system', 'weblogic103')


Traceback (innermost last):
(no code object) at line 0
File "", line 1
createDomain('/home/backup/olddomain.jar', '/home/otherusr/domains/newdomain',?system', 'weblogic103')
^
SyntaxError: Lexical error at line 1, column 99. Encountered: "\ufffd" (65533), after : ""

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 2/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions

This "Lexical error" got due to the copying from the webpage which has single quotes in different unicode value. When
I retype the single quotes it was resolved.

Here in the above sample after issuing try block starting we must use a tab or 4 spaces before connect() command.
When it found that is not
having proper indentation it raised the SyntaxError.

NameError

When the name used to do something like print or use in some other expression without assigning the value before it
was defined then WLST will raises NameError. When first time scripting most of the time user encounters this
unknowingly.

The following example might give you an idea how to resolve your issue.

wls:/offline> var1=100
wls:/offline> var3=var1+var2
Traceback (innermost last):
File "", line 1, in ?

You can handle this kind of error with our try-except block

wls:/offline> try: var3=var1+var2


...except NameError, e:
... print "Please check there is: ", sys.exc_info()[0], sys.exc_info()[1]
...
Please check there is: exceptions.NameError var2

The beauty of handling your Exception/Error more transparent and easy to understand with sys.exc_info() list.
KeyError

This error can be raised by the WLST while using the dictionary objects or map objects accessed with non-matching
key.

wls:/offline> urls['b']
Traceback (innermost last):
File
"", line 1, in ?
KeyError: b

ValueError
The ValueError is raised by the WLST shell when there is a inappropriate element is accessed in a list or a variable,
that is such as the value specified for searching in the list with index() method. Removing the element which is not
really exists in the list.

wls:/offline> L.index('web2')
Traceback (innermost last):
File
"<console>", line 1, in ?
ValueError: list.index(x): x not in list

I was working on thread and JVM monitoring script, encountered with the ValueError in different way. After storing
the ThreadPool values, JVM values into local variables I was using C type of formatting to display the data in a row of
Table. Some of the attribute values are Long integers, some of them plain integers some of them are strings.

cd('/ServerRuntimes/'+ svr +'/ThreadPoolRuntime/ThreadPoolRuntime')


thtot=`get('ExecuteThreadTotalCount')`
thid= `get('ExecuteThreadIdleCount')`
hog= `get('HoggingThreadCount')`
sbth= `get('StandbyThreadCount')`
cr =`get('CompletedRequestCount')`
pr =`get('PendingUserRequestCount')`
ql =`get('QueueLength')`
th= `get('Throughput')`

cd('/ServerRuntimes/'+svr+'/JVMRuntime/'+svr)
freejvm = long(get('HeapFreeCurrent'))/(1024*1024)
totaljvm = long(get('HeapSizeCurrent'))/(1024*1024)
usedjvm = (totaljvm - freejvm)

When I ran with all numbered values with format as %5d it was shouted as follows:

ValueError: unsupported format character ' ' (0x20) at index 23

Don't know what attribute requires which format ... Initially to resolve this display without any format for all
attributes values from the MBean.

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 3/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions
print svr, thtot, thid, hog, sbth, cr, pr, ql, th, hs, totaljvm, freejvm, usedjvm

But still ValueError was exists, when I updated with formatter it was stuck with CompletedRequestCount that was not
integer type, it is actually Long integer type and that was causing the Error. So, changed the format for that attribute
it resolved one issue. Now the issue with different index number came... I have an idea that, if I found all the
attributes and their data types then it will be easy to fix the right format for each. I tried the following way

print type(thtot),type(thid), type(hog), type(sbth), type(cr), type(pr), type(ql), type(th),type(freejvm), type(totaljvm), type(usedjvm)

formatted accordingly the ValueError is resolved.

print '%14s %10s %5s %5s %5s %5s %8s %5s %5s %8s %5dMB %5dMB %5dMB' % (svr, hs, thtot, thid, hog, sbth, cr, pr, ql, th, totaljvm, freejvm, usedjv

So now you can take care of Values of variables for your WLST code before use them for any operation!!
AttributeError

You might be on MBean tree where there is no such attribute defined and you tried to access it then WLST Shell raises
AttributeError. Let us see an Example you can easily understand.

wls:/demodom/serverConfig> cmo.State()
Traceback (innermost last):
File "", line 1, in ?
AttributeError: State

IndexError
The IndexError will be raised by the WLST shell, when thelist object is accessed with a out of range index value.

Let us see the example a list is defined with 5 elements

wls:/offline> L['app1', 'app2', 'app3', 'app4', 'web1']

when it is accessed with out of range index value say 7 then you get the IndexError.

wls:/offline> L[7]
Traceback (innermost last):
File
"<console>", line 1, in ?
IndexError: index out of range: 7

TypeError
The basic python object types int, str assignments or expressions or print statements with
concatenation does not allows you, raises the TypeError.

wls:/offline> print 'Number of servers:', 5


Number of servers: 5

wls:/offline>print 'Number of servers:'+ 5


Traceback (innermost last):
File
"<console>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects

Thanks for reading this post, Give your feedback in comments. cheers!!

Good References:

1. http://www.doughellmann.com/articles/how-tos/python-exception-handling/
2. http://www.jython.org/jythonbook/en/1.0/ExceptionHandlingDebug.html
3. http://www.tutorialspoint.com/python/python_strings.htm

Posted by Pavan Devarakonda [PD] at 11:00 AM

Labels: Errors, Exceptions, IndexError, KeyError, NameError, SyntaxError, ValueError, WebLogic 10, WebLogic 10.3.1, WebLogic 10.3.3,
WebLogic 11g, WebLogic 9.2, WLST Error, WLST Exception, WLST Python Error

9 comments:

Ajay Ajay August 2, 2014 at 12:22 PM

Hi, I am getting Name Error when I run the following script. Could you please help on how to fix this. I have just pasted
half the script here. If you want the full script please let me know.

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 4/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions
This is the error I get when I run the script:
=================================
java weblogic.WLST testdeploy.py -n true -u weblogic -p password123 -a localhost -m ShoppingCart.war -c deploy -d
/home/oracle/fmw/ -t AdminServer

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

usage:
java weblogic.WLST testdeploy.py [-n] -u user -p password -a url -m moduleName -c command -d sourcedir -t targets
Problem invoking WLST - Traceback (innermost last):
File "/home/oracle/fmw/Atradius/testdeploy.py", line 30, in ?
NameError: opts

================================

========AutoDeploy.ps====================
import getopt
import sys
import os
from java.lang import System

def usage():
print 'usage:'
print 'java weblogic.WLST testdeploy.py [-n] -u user -p password -a url -m moduleName -c command -d sourcedir -t
targets'
#print "java weblogic.WLST app_ctl.py [-n] -u user -p password -a url -m moduleName -c command -d sourcedir -t targets
-s stagemode"
try:
opts, args = getopt.getopt(sys.argv[1:], "nu:p:a:m:c:d:t:", ["user=", "password=", "url=","moduleName=", "command=",
"soucedir", "targets"])
#opts, args = getopt.getopt(sys.argv[1:], "nu:p:a:m:c:d:t:s:", ["user=", "password=", "url=","moduleName=", "command=",
"soucedir", "targets", "stagemode"])
except getopt.GetoptError, err:
print str(err)

#sys.exit(2)
usage()

reallyDoIt = true
user=None
password=None
url=None
moduleName=None
command=None
sourcedir=None
targets=None
#stagemode=None

for opt, arg in opts:


if opt == "-n":
reallyDoIt = false
elif opt == "-u":
user = arg
elif opt == "-p":
password = arg
elif opt == "-a":
url = arg
elif opt == "-m":
moduleName = arg
elif opt == "-c":
command = arg
elif opt == "-d":
sourcedir = arg
elif opt == "-t":
targets = arg

=======================================

Reply

Replies

Pavan BhavaniShekhar Devarakonda August 5, 2014 at 9:00 AM

@Ajay, looking into your script I suggest two things please check the indentation that is mandatory for the
Python scripting. other one is use your options with getopt module which you get it from the command lie
arguments.

opts, args = getopt.getopt(sys.argv[1:], "nu:p:a:m:c:d:t:", ["user=", "password=", "url=","moduleName=",


"command=", "soucedir", "targets"])

is this line working for you.

Reply

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 5/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions
halfaus December 21, 2015 at 12:53 PM

An "else:" statement applies to the "except:", so it only runs if there is not an exception. So in your first code sample the
below comment is incorrect.

"else:
# execute code that must always be invoked"

Reply

Blogger July 6, 2017 at 10:59 PM

If you need your ex-girlfriend or ex-boyfriend to come crawling back to you on their knees (even if they're dating
somebody else now) you must watch this video
right away...

(VIDEO) Have your ex CRAWLING back to you...?

Reply

Priya angel August 9, 2018 at 7:14 PM

Thank you.. This is very helpful. . python Online Course

Reply

PaperCoach. net March 6, 2019 at 2:31 AM

Great and useful article. Creating content regularly is very tough.Thanks you. argumentative thesis statement examples

Reply

durga sengar March 19, 2019 at 6:10 AM

great article and usefull to Python Strings

Reply

HomeWorkFor.me April 22, 2019 at 3:42 AM

Thank you for this post. This is very interesting information for me. Who can do my homework essay ?

Reply

linh May 3, 2019 at 6:48 AM

iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet
iphongthuynet

Reply

Add comment

Please write your comment here

Enter your comment...

Comment as: sherif.oracledba Sign out

Publish Preview Notify me

Newer Post Home Older Post

Subscribe to: Post Comments (Atom)

Popular Posts

Server State using WLST


While trouble shooting administrator need to check the status of all server instances. This is the basic need
when the all the servers are...

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 6/7
10/19/2019 WLST by Examples: WLST Errors and Exceptions

WLST Errors and Exceptions


When first time you started using WLST you might get many of these Python based WLST Errors. Here I had
collected few of them which are ve...

My way of deployment with WLST


This Script has ultimate goal to automate to one-step process for deploying the code onto WebLogic
Development environments. Usually the ...

Configuring a Generic Datasource


Configuring the datasource is one time activity for any project in production environment but where as for
development or testing environmen...

WLST Programming Controls


Effective programming could be developed using right decision making in your scripts. Here I would like to share
some basics of Python prog...

WLST Tricks & Tips


Here I prepared few of the "Tips" and some commonly useful "Tricks" for developing the huge WLST scripts. These are all...

Get Options for command line in WLST script


Problem Statement Required a Python script for check if the WebLogic admin server is 'Running' or Not recursively To execute
this...

JDBC datasource monitoring


" JDBC Monitoring " script, which I was published 2 days back works good for simple single data source and also multi
datasources ...

Dynamic Domain creation with WLST


Introducing Dynamism Hey all wise WLA welcome to this exclusive WLST blog again! My dear buddies, this week
I was invited  for a discuss...

JDBC Monitoring
JDBC Monitoring with LWLST script One fine morning we (WLA support Team) got an assignment, The summary of
the assignment was to find &q...

Oracle WebLogic Administration Course

WebLogic Training

https://wlstbyexamples.blogspot.com/2010/01/wlst-errors-and-exceptions.html 7/7

You might also like