我正在尝试创建一个简单的python脚本,将我的EAR文件部署到Weblogic的AdminServer。我搜索了互联网和Oracle提供的文档,但我找不到确定应用程序是否先前已部署的方法。我希望我的脚本检查它是否已经存在,如果是,则发出redeploy命令。如果没有,请发出deploy命令。
我试图修改我发现的示例脚本,尽管它们已经有效,但它们并没有按预期运行。我尝试做的其中一件事是检查(使用cd命令),如果我的EAR位于WebLogic的deployments文件夹中,如果是,则发出重新部署。如果没有,它应该抛出异常,我将发出部署。但是,每次在我的脚本中发出cd命令时都会抛出异常:
try:
print 'Checking for the existence of the ' + applicationName + ' application.....'
cd('C:\\Oracle\\Middleware\\user_projects\\domains\\base_domain\\config\\deployments\\MyTestEAR.ear\\')
print 'Redeploying....'
#Commands to redeploy....
except WLSTException:
#Commands to deploy
我在使用WLST脚本工具设置环境变量后使用execfile(“C:\ MyTestDeployer.py”)命令在Windows上运行此脚本。有任何想法吗?我也尝试在cd命令中使用不同的路径,但无济于事。有任何想法吗?
这个对我有用:
print 'stopping and undeploying ...'
try:
stopApplication('WebApplication')
undeploy('WebApplication')
print 'Redeploying...'
except Exception:
print 'Deploy...'
deploy('WebApplication', '/home/saeed/project/test/WebApplication/dist/WebApplication.war')
startApplication('WebApplication2')
我过去做过类似的事情,但采用了不同的方法......
我已经使用带有-listapps选项的weblogic.Deployer接口列出了部署到域的应用程序/库,然后我将其与存档中生成的application.xml的display-name元素进行比较
在我的例子中,我发现使用普通文件名发现的问题是档案带有生成它们的日期。这将导致总是错误的比较。
使用display-name,我已经标准化了将要部署的应用程序名称,并且稍后将与要重新部署的新存档进行比较。
在联机模式下使用命令listApplications()
列出当前在WebLogic域中部署的所有应用程序。
如果发生错误,该命令将返回WLSTException。
示例:
wls:/mydomain/serverConfig> listApplications()
SamplesSearchWebApp
asyncServletEar
jspSimpleTagEar
ejb30
webservicesJwsSimpleEar
ejb20BeanMgedEar
xmlBeanEar
extServletAnnotationsEar
examplesWebApp
apache_xbean.jar
mainWebApp
jdbcRowSetsEar
资料来源:link