Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定是否已使用WLST在WebLogic Server中部署了EAR?_Python_Weblogic_Ear_Wlst - Fatal编程技术网

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

Python 确定是否已使用WLST在WebLogic Server中部署了EAR?,python,weblogic,ear,wlst,Python,Weblogic,Ear,Wlst,我试图创建一个简单的python脚本,将EAR文件部署到Weblogic的AdminServer。我已经搜索了internet和Oracle提供的文档,但是我找不到一种方法来确定该应用程序之前是否已部署。我想让我的脚本检查它是否已经,如果是,发出一个重新部署命令。如果不是,则发出deploy命令 我已经尝试修改我发现的示例脚本,尽管它们工作正常,但它们的行为并不像预期的那样。我尝试做的一件事是检查(使用cd命令)我的EAR是否在WebLogic的deployments文件夹中,如果在,则发出重新

我试图创建一个简单的python脚本,将EAR文件部署到Weblogic的AdminServer。我已经搜索了internet和Oracle提供的文档,但是我找不到一种方法来确定该应用程序之前是否已部署。我想让我的脚本检查它是否已经,如果是,发出一个重新部署命令。如果不是,则发出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脚本工具设置环境变量之后,我正在Windows上使用execfile(“C:\MyTestDeployer.py”)命令运行此脚本。有什么想法吗?我还尝试在cd命令中使用不同的路径,但没有效果。有什么想法吗?

我以前也做过类似的事情,但方法不同

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

在我的例子中,我发现使用普通文件名的问题是,归档文件随生成日期而来。这会导致错误的比较

使用显示名称,我对将要部署的应用程序名称进行了标准化,并将其与将要重新部署的新归档文件进行了比较。

这对我很有用:

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

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

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

例如:

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

来源:

Hi vhnd。你能再详细说明一下吗?我不知道你的确切意思。在我的情况下,我只是用了bash。。。weblogic.Deployer接口将输出保存在普通文件上以供以后进行灰显,并解压缩命令以检查.ear中的application.xml文件。同一个脚本将为许多不同的域执行此操作,因此我只需连接到给定的域,检查已部署的应用程序,然后检查是否有我必须部署的应用程序。我只是说,我开始检查那些无论同一应用程序的存档文件名如何都不会改变的东西。对不起,我不知道你到底想让我说得更具体些。谢谢赛义德。我想我是想得太多了。这是WLST脚本吗?