2010-08-26 98 views
2

我一直沿着非常好的Tomcat6 Application Developers Guide。我抓住了他们的build.xml,其中包含方便的蚂蚁任务install,该任务使用catalina-ant.jar任务deployant安装部署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。我宁愿不打开我的家庭目录的权限,必须有更好的方法?

+0

我已经从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

回答

2

您需要将您的webapp打包到一个.war文件中,并将其上传到Tomcat。如果您使用的样本build.xml,只需安装目标取决于dist目标,并改变

localWar="file://${build.home}" 

war="${dist.home}/${app.name}-${app.version}.war"` 

Alternativly,你的build.xml战争改变输出到你可以与tomcat共享的目录 - 例如某处在/ tmp

+0

谢谢,这给了我在'build'中定义'build.home =/tmp/public/build /'的想法.properties'。 Tomcat管理员不能高兴地抓住我的文件进行部署。 – 2010-08-27 14:08:07