Java Tomcat 6中取消部署任务的问题

Java Tomcat 6中取消部署任务的问题,java,tomcat,ant,Java,Tomcat,Ant,我正在OSX雪豹上使用Tomcat6、ApacheAnt1.7.1和JDK1.6 创建了以下生成脚本和支持的属性文件: (1)build.xml <?xml version="1.0"?> <project name="${project.name}" default="deploy" basedir="."> <property file="build.properties"/> <property file="admin.proper

我正在OSX雪豹上使用Tomcat6、ApacheAnt1.7.1和JDK1.6

创建了以下生成脚本和支持的属性文件:

(1)build.xml

<?xml version="1.0"?>
<project name="${project.name}" default="deploy" basedir=".">
    <property file="build.properties"/>
    <property file="admin.properties"/>

    <taskdef file="tomcatTasks.properties">
      <classpath>
        <pathelement path="${tomcat.home}/lib/catalina-ant.jar"/>
      </classpath>
    </taskdef>

    <target name="prepare">
       <mkdir dir="${webapp.build.dir}" />
       <mkdir dir="${webapp.build.dir}/WEB-INF" />
       <mkdir dir="${webapp.build.dir}/WEB-INF/lib" />
       <mkdir dir="${webapp.build.dir}/WEB-INF/classes" />
    </target>

    <target name="static" depends="prepare">
       <!-- Copy web files -->
       <copy todir="${webapp.build.dir}/">
           <fileset dir="web" />
       </copy>
       <!-- Copy webapp configuration files -->
       <copy todir="${webapp.build.dir}/WEB-INF/">
          <fileset dir="etc" />
       </copy>
       <!-- Copy properties files -->
       <copy todir="${webapp.build.dir}/WEB-INF/classes">
         <fileset dir="props" />
       </copy>
       <!-- Copy jar files -->
       <copy todir="${webapp.build.dir}/WEB-INF/lib/">
          <fileset dir="lib" />
       </copy>
    </target>

    <target name="compile" depends="static">
       <javac srcdir="src"
           destdir="${webapp.build.dir}/WEB-INF/classes/"
           deprecation="off" debug="on" optimize="off">
           <classpath>
               <!-- Include all JAR files in my local library -->
               <fileset dir="lib">
                  <include name="*.jar"/>
               </fileset>
               <!-- Include all common libraries in Tomcat -->
               <fileset dir="${tomcat.home}/lib">
                   <include name="*.jar"/>
               </fileset>
           </classpath>
       </javac>
    </target>

    <target name="deploy" depends="compile">
       <jar jarfile="${build.dir}/${webapp.name}.war" basedir="${webapp.build.dir}" />
       <!-- Copy the newly built WAR file into the deployment directory -->
       <copy file="${build.dir}/${webapp.name}.war" todir="${tomcat.deployment.dir}" />
    </target>

    <target name="clean" description="Clears all generated files, including build directories, distributables, and documentation.">
       <delete dir="${build.dir}"/>
    </target>

    <target name="package">
       <jar jarfile="${build.dir}/${webapp.name}.war" basedir="${webapp.build.dir}" />
    </target>

    <target name="install" description="Install application in Tomcat" depends="package">
        <deploy url="${tomcat.manager.url}"
            username="${tomcat.username}"
            password="${tomcat.password}"
            path="/${webapp.name}"
            war="file:${tomcat.deployment.dir}/${webapp.name}.war"/>
    </target>

    <target name="undeploy" depends="clean" description="Remove application in Tomcat">
        <undeploy url="${tomcat.manager.url}"
              username="${tomcat.username}"
              password="${tomcat.password}"
              path="/${webapp.name}"/>
    </target>
</project>
(3)build.properties

project.name=myproject
build.dir=./build

# Web app properties for the project
webapp.name=myproject
webapp.build.dir=${build.dir}/${webapp.name}
webapp.virtual.host=localhost
webapp.meta.dir=${webapp.build.dir}/META-INF

# Tomcat properties
tomcat.home=/Users/myuser/DevTools/Java/tomcat/apache-tomcat-6.0.20
tomcat.deployment.dir=${tomcat.home}/webapps
# Tomcat Task Properties
deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask
Buildfile: /Users/myuser/work/myproject/build.xml
Trying to override old definition of datatype resources
clean:
    [delete] Deleting directory /Users/myuser/work/myproject/build
undeploy:

BUILD FAILED
/Users/myuser/work/myproject/build.xml:83: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/undeploy?path=/myproject

Total time: 170 milliseconds
(4)tomcatTasks.properties

project.name=myproject
build.dir=./build

# Web app properties for the project
webapp.name=myproject
webapp.build.dir=${build.dir}/${webapp.name}
webapp.virtual.host=localhost
webapp.meta.dir=${webapp.build.dir}/META-INF

# Tomcat properties
tomcat.home=/Users/myuser/DevTools/Java/tomcat/apache-tomcat-6.0.20
tomcat.deployment.dir=${tomcat.home}/webapps
# Tomcat Task Properties
deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask
Buildfile: /Users/myuser/work/myproject/build.xml
Trying to override old definition of datatype resources
clean:
    [delete] Deleting directory /Users/myuser/work/myproject/build
undeploy:

BUILD FAILED
/Users/myuser/work/myproject/build.xml:83: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/undeploy?path=/myproject

Total time: 170 milliseconds
(5)tomcat users.xml

project.name=myproject
build.dir=./build

# Web app properties for the project
webapp.name=myproject
webapp.build.dir=${build.dir}/${webapp.name}
webapp.virtual.host=localhost
webapp.meta.dir=${webapp.build.dir}/META-INF

# Tomcat properties
tomcat.home=/Users/myuser/DevTools/Java/tomcat/apache-tomcat-6.0.20
tomcat.deployment.dir=${tomcat.home}/webapps
# Tomcat Task Properties
deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask
Buildfile: /Users/myuser/work/myproject/build.xml
Trying to override old definition of datatype resources
clean:
    [delete] Deleting directory /Users/myuser/work/myproject/build
undeploy:

BUILD FAILED
/Users/myuser/work/myproject/build.xml:83: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/undeploy?path=/myproject

Total time: 170 milliseconds

当我运行deploy target时,一切都正常(它将myproject.war放在$CATALINA_HOME/webapps下面)

但是,当我运行取消部署目标时,会收到以下错误消息:

问题

project.name=myproject
build.dir=./build

# Web app properties for the project
webapp.name=myproject
webapp.build.dir=${build.dir}/${webapp.name}
webapp.virtual.host=localhost
webapp.meta.dir=${webapp.build.dir}/META-INF

# Tomcat properties
tomcat.home=/Users/myuser/DevTools/Java/tomcat/apache-tomcat-6.0.20
tomcat.deployment.dir=${tomcat.home}/webapps
# Tomcat Task Properties
deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask
Buildfile: /Users/myuser/work/myproject/build.xml
Trying to override old definition of datatype resources
clean:
    [delete] Deleting directory /Users/myuser/work/myproject/build
undeploy:

BUILD FAILED
/Users/myuser/work/myproject/build.xml:83: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/undeploy?path=/myproject

Total time: 170 milliseconds
如果有人能告诉我我做错了什么,我会非常感激

感谢您抽出时间阅读此


快乐编程。

它失败了,因为Tomcat manager应用程序返回HTTP状态代码403,这意味着禁止。因此,访问被拒绝

当我在谷歌上搜索你的问题时,我找到了你的问题,其中包括你的
tomcat users.xml
文件(这里不包括)。我发现没有用户具有运行
undeploy
任务所需的
manager
角色。尝试将
manager
角色添加到您的
admin
用户

<role rolename="manager"/>
<user username="admin" password="admin" roles="admin,manager"/> 

从:

要启用对Manager web应用程序的访问,您必须创建新的用户名/密码组合并将角色名称Manager与其关联,或者将Manager角色添加到某些现有用户名/密码组合中


如果您想知道为什么您的
deploy
任务在
undeploy
任务不工作时,您的
deploy
任务似乎在工作,这是因为
deploy
任务似乎没有使用manager应用程序进行部署。相反,它只是将
war
复制到目标目录。

请尝试为您正在使用的tomcat用户添加角色
管理器脚本

e、 g


tomcat 7.0用户配置中的完整用户条目

<role rolename="tomcat"/>
<role rolename="manager"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="standard"/>
  <user username="admin" password="admin" roles="tomcat,manager,standard,manager-script,manager-gui"/>
</tomcat-users>


大多数时候人们都会错过第一个角色。停止并重新启动服务器,您就可以了。

我想您的意思是:编辑它以包含您的修复程序。Tomcat文档“具有manager gui角色的用户不应被授予manager脚本或manager jmx角色。”