############################################################################
# Generic script applicable on any Operating Environments (Unix, Windows)
# ScriptName    : wls_undeploy.py
# Properties    : weblogic.properties test.properties
# Author        : Kevin Yuan
############################################################################

#===========================================================================
# Connect to wls server
#===========================================================================

connect('@WL_USR@','@WL_PWD@','t3://@WL_HOST@:@WL_PORT@')

#===========================================================================
# Undeploy applications from wls server
#===========================================================================

edit()
startEdit()
stopApplication('@appName@')
undeploy(appName='@appName@')
save()
activate()
exit()
