我一直沿着非常好的Tomcat6 Application Developers Guide。我抓住了他們的build.xml
,其中包含方便的螞蟻任務install
,該任務使用catalina-ant.jar
任務deploy
。ant安裝部署Tomcat webapp失敗,出現許可問題
<target name="install" depends="compile"
description="Install application to servlet container">
<deploy url="${manager.url}"
username="${manager.username}"
password="${manager.password}"
path="${app.path}"
localWar="file://${build.home}"/>
</target>
我的項目目前位於/home/leif/test/mytomcatapp/
。
我build.properties
樣子:
manager.username=admin
manager.password=admin
manager.url=http://localhost:8080/manager/
cataline.home=/usr/share/tomcat6/
而且我/etc/tomcat6/tomcat-users.xml
樣子:
<role rolename="admin"/>
<role rolename="manager"/>
<user name="admin" password="admin" roles="admin,manager" />
但是,當我做我的ant install
來測試我的web應用程序我得到一個錯誤進行部署:
$ ant install
Buildfile: build.xml
Trying to override old definition of datatype resources
prepare:
compile:
install:
[deploy] FAIL - Failed to deploy application at context path /mytomcatapp
BUILD FAILED
FAIL - Failed to deploy application at context path /mytomcatapp
而在/var/log/tomcat/catalina.out
它說:
java.io.FileNotFoundException: /home/leif/test/mytomcatapp/build (Permission denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at org.apache.catalina.manager.ManagerServlet.copyInternal(ManagerServlet.java:1644)
at org.apache.catalina.manager.ManagerServlet.copy(ManagerServlet.java:1605)
at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:819)
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:350)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:636)
因此,Tomcat管理器無法訪問我的主目錄中的文件。沒有什麼令人震驚的。但ant install
任務有望如何工作?這當然假設人們將其項目的源代碼保存在其主目錄中,並從該位置執行ant install
。我寧願不打開我的家庭目錄的權限,必須有更好的方法?
我已經從Ant切換到Maven來構建我的webapps。我把'catalina'作爲一個依賴項,並且免費獲得'mvn tomcat:deploy'命令和其他的命令。這簡單得多,只是工作。 http://mavenhub.com/mvn/central/org.apache.tomcat/catalina/6.0.32 – 2012-03-24 13:33:52