我正在尝试通过WLST执行远程上传和部署。 我成功部署了已存在于WebLogic服务器路径中的应用程序。但是现在,我想部署一个远程可用的。
在部署之前,是否有可能通过WLST在WebLogic服务器上上载WAR / EAR ?
我正在运行weblogic 12C。
我尝试过:
java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy /tmp/HelloWorld.war -remote -upload
给我回报:
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.
当我检查服务器时,没有部署任何内容。
答案 0 :(得分:4)
我找到了解决方案: 我们不能将/ tmp目录用作源,因为weblogic.Deployer使用此目录。
所以命令是:
java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl
t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy
/home/admin/HelloWorld.war -remote -upload
答案 1 :(得分:2)
是的,有。看看WLST deploy
command reference(此链接适用于版本10gR3)
您可以使用remote
指定upload
和true
选项,因为它们的默认值为false。
PS 1:WebLogic 9.0及更早版本上没有remote
选项(但您可以随时获得更新weblogic.jar
并尝试。
PS 2:您需要远程访问管理界面(通常是端口7001和/或7002)。这意味着打开防火墙等
PS 3:请提供WebLogic服务器的版本,因为这可以帮助我们。
答案 2 :(得分:0)
部署(项目,存档 ,apptargets,'stage',计划 ,remote ='true',upload ='true',archiveVersion = archiveversion,planVersion = planversion)
完整的脚本:(自己下一行代码,我必须添加一些空格把它放在这里)
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
玩得开心。