2010-05-13 2 views
4

Я пытаюсь развернуть войну на сервере Apache Tomcat (Build 6.0.24), используя python (2.4.2) как часть процесса сборки.развертывание войны с tomcat с использованием python

Я использую следующий код

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". Однако веб-архив не отображается на странице приложений менеджера.

Спасибо.

+1

Из любопытства вы рассмотрели использование jython, а затем использовали библиотеку Cargo для управления развертыванием Tomcat (или любого контейнера, если на то пошло). Это может сэкономить вам некоторую работу: http://cargo.codehaus.org/ – whaley

+0

Интересно, что в какой-то момент он должен будет работать в jython как часть самораспаковывающегося установщика. Так что это может сэкономить много сил. Хорошая находка, сэр! – Decado

ответ

2

Хорошо, понял.

Линия urllib2.Request должна иметь косую черту перед пути так: -

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

Все то работает отлично.

+0

Не стесняйтесь принимать свой собственный ответ! –

+0

Хотелось бы, однако, получить «Вы можете принять свой собственный ответ в течение 2 дней» – Decado

Смежные вопросы