2010-05-13 5 views
4

파이썬 (2.4.2)을 빌드 프로세스의 일부로 사용하여 Apache Tomcat 서버 (빌드 6.0.24)에 전쟁을 전개하려고합니다.파이썬을 사용하여 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"입니다을 사용하고 있습니다. 그러나 웹 아카이브는 관리자 목록 응용 프로그램 페이지에 나타나지 않습니다.

감사합니다.

+1

호기심에서 자이 썬을 사용하고 Cargo 라이브러리를 사용하여 Tomcat (또는 해당 컨테이너에 대한 배치)을 관리하는 방법을 고려해 보았습니까? http://cargo.codehaus.org/ – whaley

+0

흥미롭게도 자동 압축 풀기 설치 프로그램의 일부로 어떤 시점에서 자이 썬에서 실행해야합니다. 그래서 많은 노력을 덜 수 있습니다. 잘 찾았습니다. – Decado

답변

2

좋습니다. 알아 냈습니다.

urllib2.Request 라인 때문에 경로 앞에 슬래시가 있어야합니다 : -

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

모든 후 잘 작동합니다.

+0

자유롭게 답을 수락하십시오! –

+0

그러나 "2 일 메시지로 나만의 답변을 수락 할 수 있습니다." – Decado

관련 문제