2011-08-30 76 views
3

我想创建一个简单的Python脚本,将我的EAR文件部署到Weblogic的AdminServer。我搜索了互联网和Oracle提供的文档,但是我找不到确定应用程序是否已经部署过的方法。我希望我的脚本检查它是否已经存在,如果是,请发出重新部署命令。如果不是,请发出一个部署命令。确定EAR是否已使用WLST部署在WebLogic Server中?

我试图修改我找到的示例脚本,尽管它们已经工作,但它们并不像预期那样工作。我试图做的事情之一是检查(使用cd命令),如果我的EAR位于WebLogic的部署文件夹中,并且如果是,则发出重新部署。如果没有,它应该抛出一个异常,在那里我会发出部署。然而,一个异常被抛出每次,当我在我的脚本发出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 

我在Windows上使用的execfile(“\ MyTestDeployer.py C”)运行此脚本使用WLST脚本工具。有任何想法吗?我也尝试在我的cd命令中使用不同的路径,但无济于事。有任何想法吗?

回答

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

谢谢赛义德。我想我是过度思考解决方案。 – JPM

+0

这是WLST脚本吗? –

+0

是用python写的。 –

2

我做了这样的事情在过去,而是用不同的方法......

我用的weblogic.Deployer接口与-listapps选项列出部署到应用程式/库然后我将它与存档中生成的application.xml的display-name元素进行比较

我发现在我的例子中使用纯文件名的问题是,归档文件中包含日期它们是由它们生成的。这会导致总是错误的比较。

使用显示名称,我已经标准化了将要部署的应用程序名称,并在稍后与要重新部署的新归档相比较。

+0

嗨vhnd。你能再详述一下吗?我不确定你的意思。 – JPM

+0

对我而言,我只用了bash ... weblogic.Deployer接口将输出保存在普通文件中用于稍后的grep,并解压缩用于检查.ear中的application.xml文件的命令。相同的脚本可以为多个不同的域执行此操作,因此我只需连接到给定的域,检查已部署的应用程序,然后检查是否需要部署。我只是说我开始检查一些不会改变的东西,无论同一个应用程序的档案文件名是什么。对不起,不确定你想让我更具体。 – vhnd