I'm trying to perform remote uploading and deploying via WLST.
I succeed to deploy applications already present in the path of the WebLogic server. But now, I would like to deploy one remotely available.
Is there any possibility to upload WAR/EAR on the WebLogic server via WLST before deploying it?
I'm running weblogic 12C.
I tried with:
java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy /tmp/HelloWorld.war -remote -upload
give me as return:
weblogic.Deployer invoked with options: -adminurl t3://WeblogicServer:7001 -user weblogic -deploy /tmp/HelloWorld.war -remote -upload
<6 juil. 2012 17 h 58 CEST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, HelloWorld [archive: /tmp/HelloWorld.war], to configured targets.>
[J2EE Deployment SPI:260080]Unable to define the application install directory at "/tmp/helloworld.war". Directory could not be created or is a file.
And when i check on the server, nothing is deployed.
I found the solution:
We must not use the /tmp directory as source, because the weblogic.Deployer use this directory.
So the command is:
java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl
t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy
/home/admin/HelloWorld.war -remote -upload
Yes, there is. Take a look at WLST deploy
command reference (This link is for version 10gR3).
You can specify the remote
and the upload
options with true
, since their default values are false.
PS 1: The remote
option is not available on WebLogic 9.0 and older versions (but you can always get a newer weblogic.jar
and try.
PS 2: You will need to have remote access to the administrative interfaces (usually ports 7001 and/or 7002). That means opening firewalls, etc.
PS 3: Please provide the version of your WebLogic server, as this might help us help you.
Written myself, can do undeploy + deploy. The deploy line is:
deploy( project, archive
, apptargets, 'stage', plan
, remote='true', upload='true', archiveVersion=archiveversion, planVersion=planversion )
- disadvantage of using version number in deploy is that redeploy with plan is not working
Complete script: (line next code out yourself, I had to add some spaces to place it here)
from java.io import FileReader
from datetime import datetime
def deployApp( project, archive, archiveversion, plan, planversion, apptargets ):
#### UNDEPLOY app
try:
domainConfig()
cd('/')
found = false
for app in cmo.getAppDeployments():
name=app.getName()
try:
cd('/AppDeployments/' + name )
applicationName=get('ApplicationName')
if applicationName==project:
print '\n__ FOUND aplication: ', name
found = true
version=get('VersionIdentifier')
sourcePath=get('SourcePath')
planPath=get('PlanPath')
targets=''
for target in cmo.getTargets():
targetName=target.getName()
if targets=='':
targets=targetName
else:
targets=targets + ', ' + targetName
print ' applicationName:\t', applicationName
print ' version:\t\t', version
print ' sourcePath:\t', sourcePath
print ' planPath:\t', planPath
print ' targets:\t\t', targets
if version==archiveversion + '#' + planversion:
print '\nCorrect Application version found. No installation needed\n'
return
else:
print '\n__ REMOVING application: ',applicationName, ' version:', version
undeploy(project)
except:
print "IGNORE ERROR: (deployed applicaties gegevens ophalen) ", sys.exc_info()[0]
if found==false:
print "Application " + project + "not found."
except:
print "Failure in application remove part: ", sys.exc_info()[0]
raise
# get deploy targets
try:
if apptargets==None:
serverConfig()
cd('/')
targetList = []
for cluster in cmo.getClusters():
targetList.append( cluster.getName() )
apptargets = ",".join(targetList)
print 'USING default app target:', apptargets, " (apptargets not found in environmentfile)"
except:
print "Failure while creating default target", sys.exc_info()[0]
raise
#### DEPLOY app
try:
print '\n__ DEPLOYING application: ', project, archiveversion + '#' + planversion + ' target:' + apptargets
deploy( project, archive
, apptargets, 'stage', plan
, remote='true', upload='true', archiveVersion=archiveversion, planVersion=planversion )
except:
print "Failure in deployment part: ", sys.exc_info()[0]
raise
# connect to domein
# 1) in plain passsword
# 1) using encrypted domain credential in separate files
# 2) using encrypted domain credential in home directory user
def Connect( domainproperties ):
plainUser = domainproperties.getProperty("user")
plainPassword = domainproperties.getProperty("password")
if not (plainUser is None) and not (plainPassword is None):
print "Connecting with user & password"
connect( plainUser, plainPassword, domainproperties.getProperty("url"))
return
encryptedUserConfigFile = domainproperties.getProperty("encryptedCredentialsFile")
encryptionKeyFile = domainproperties.getProperty("encryptionKeyFile")
if not (encryptedUserConfigFile is None) and not (encryptionKeyFile is None):
print "Connecting with encryptedCredentialsFile: ", encryptedUserConfigFile, " and encryptionKeyFile: ", encryptionKeyFile
connect(userConfigFile=encryptedUserConfigFile, userKeyFile=encryptionKeyFile, url=domainproperties.getProperty("url"))
return
print "Connecting with encryptedCredentialsFile in home directory"
connect( url=domainproperties.getProperty("url") )
return
try:
print "____ running app_deploy.py at " + str(datetime.now())
project = sys.argv[1]
archive = sys.argv[3]
archiveversion = sys.argv[4]
plan = sys.argv[5]
planversion = sys.argv[6]
environmentfile = sys.argv[2]
propertyfilereader=FileReader(environmentfile)
domainproperties=Properties()
domainproperties.load(propertyfilereader)
print " environment: ", environmentfile
print " Ear: ", archive, " version:", archiveversion
print " plan: ", plan, " version:", planversion
## Connect
#connect( domainproperties.getProperty("user"), domainproperties.getProperty("password"), domainproperties.getProperty("url") )
Connect( domainproperties )
try:
## Deploy
deployApp( project, archive, archiveversion, plan, planversion, domainproperties.getProperty("apptargets") )
finally:
# niet dat het uitmaakt, maar wel zo netjes
disconnect()
except:
print "ABORT APP DEPLOY: ", # sys.exc_info()[0], "_", sys.exc_info()[1]
raise
Have fun with it.