使用WLST确定是否已在WebLogic Server中部署EAR?

问题描述 投票:3回答:3

我正在尝试创建一个简单的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命令中使用不同的路径,但无济于事。有任何想法吗?

python weblogic ear wlst
3个回答
3
投票

这个对我有用:

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')

2
投票

我过去做过类似的事情,但采用了不同的方法......

我已经使用带有-listapps选项的weblogic.Deployer接口列出了部署到域的应用程序/库,然后我将其与存档中生成的application.xml的display-name元素进行比较

在我的例子中,我发现使用普通文件名发现的问题是档案带有生成它们的日期。这将导致总是错误的比较。

使用display-name,我已经标准化了将要部署的应用程序名称,并且稍后将与要重新部署的新存档进行比较。


0
投票

在联机模式下使用命令listApplications()列出当前在WebLogic域中部署的所有应用程序。

如果发生错误,该命令将返回WLSTException。

示例:

wls:/mydomain/serverConfig> listApplications() 
SamplesSearchWebApp
asyncServletEar
jspSimpleTagEar
ejb30
webservicesJwsSimpleEar
ejb20BeanMgedEar
xmlBeanEar
extServletAnnotationsEar
examplesWebApp
apache_xbean.jar
mainWebApp
jdbcRowSetsEar

资料来源:link

© www.soinside.com 2019 - 2024. All rights reserved.