2010-05-13 136 views
4

我試圖使用python(2.4.2)作爲構建過程的一部分將戰爭部署到Apache Tomcat服務器(構建版本6.0.24)。使用python向tomcat部署戰爭

我用下面的代碼

import urllib2 
import base64 

war_file_contents = open('war_file.war','rb').read() 

username='some_user' 
password='some_pwd' 

base64string = base64.encodestring('%s:%s' % (username, password))[:-1] 
authheader = "Basic %s" % base64string 

opener = urllib2.build_opener(urllib2.HTTPHandler) 
request = urllib2.Request('http://localhost:8080/manager/deploy?path=war_file', data=war_file_contents) 

request.add_header('Content-Type', 'application/octet-stream') 
request.add_header("Authorization", authheader) 

request.get_method = lambda: 'PUT' 
url = opener.open(request) 

的url.code是200和url.msg是 「OK」。但是,Web檔案不會出現在經理列表應用程序頁面上。

謝謝。

+1

出於好奇,你有沒有考慮過使用jython,然後使用Cargo庫來管理你的部署到Tomcat(或任何容器,就此而言)。它可能爲您節省一些工作:http://cargo.codehaus.org/ – whaley 2010-05-13 12:33:07

+0

有趣的是,它將不得不以jython作爲自解壓安裝程序的一部分運行。這樣可以節省很多努力。好的發現,先生! – Decado 2010-05-13 13:57:24

回答

2

好的,算出來了。

的urllib2.Request線需要有一個斜槓的路徑,這樣的面前: -

request = urllib2.Request('http://localhost:8080/manager/deploy?path=/war_file', data=war_file_contents) 

然後所有工作正常。

+0

隨時接受你自己的答案! – 2010-05-13 11:26:19

+0

很想知道,但是得到一個「你可以接受你自己的答案在2天的消息」 – Decado 2010-05-13 14:06:09