2011-08-30 77 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