您的位置:首页 > 其它

ANT控制Tomacat若干问题和解决方案

2013-04-04 11:17 225 查看
使用ant对tomcat中的网站进行部署和更新,简单的方案就是把webapps下对应的目录和war文件删除,然后复制进新的war就可以了。

还有一种方案就是使用tomcat中提供的catalina-ant.jar里面提供了ant操作tomcat的一些操作

首先要在tomcat-users.xml 保证你有manager-scrpit的权限,注意不是manager-gui(因为这个权限对跨站攻击进行了保护,使用ANT访问会出现403错误)

然后你需要一个tomcatTasks.properties文件,内容如下(注意每行的结尾没有任何空格)

[code] deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
reload=org.apache.catalina.ant.ReloadTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
list=org.apache.catalina.ant.ListTask

然后在你的配置文件中加入以下内容
[code] <path id="catalina-ant-classpath">
<fileset dir="${tomcat.home}/lib">
<include name="catalina-ant.jar"/>
<include name="tomcat-coyote.jar"/>
<include name="tomcat-util.jar"/>
</fileset>
<fileset dir="${tomcat.home}/bin">
<include name="tomcat-juli.jar"/>
</fileset>
</path>
<taskdef file="tomcatTasks.properties">
 <classpath refid="catalina-ant-classpath"/>
</taskdef>

还有几个属性需要设置,大家自己完善其中需要注意的是tomcat.manager.url,可以参考下面

[code] tomcat.manager.url=http://127.0.0.1:8080/manager/text

这样就可以参考以下代码,使用tomcat的API操作tomcat了

[code] <target name="install" description="Install application in Tomcat" depends="packWar">
 <deploy url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" 
 path="/${webapp.name}" war="${warFilePath}" />
 </target>
 <target name="remove" description="Remove application from Tomcat">
 <undeploy url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" 
 path="/${webapp.name}" />
 </target>
 <target name="reload" description="Reload application in Tomcat">
 <reload url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" 
 path="/${webapp.name}" />
 </target>
 <target name="start" description="Start Tomcat application">
 <start url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" 
 path="/${webapp.name}" />
 </target>
 <target name="stop" description="Stop Tomcat application">
 <stop url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" 
 path="/${webapp.name}" />
 </target>
 <target name="list" description="List Tomcat applications">
 <list url="${tomcat.manager.url}" 
 username="${tomcat.manager.username}" 
 password="${tomcat.manager.password}" />
 </target>

但是

windows下的tomcat7会因为内存泄露的问题而有时候文件删除不掉(使用catalina-ant也会undeploy失败)!!!

比较极限的解决方案是是关闭tomcat,删除文件后在重启。相应的ant配置如下


[code] <target name="stop_tomcat">
 <echo>停止tomcat</echo>
 <exec executable="cmd" dir="${tomcat.home}/bin" failonerror="false" 
 output="${log.file}" append="true" > 
 <env key="CATALINA_HOME" path="${tomcat.home}"/>
 <arg value="/c shutdown.bat" /> 
 </exec>
 </target>
 
 <target name="start_tomcat">
 <echo>启动tomcat</echo>
 <exec executable="cmd" dir="${tomcat.home}/bin"failonerror="false" 
 output="${log.file}" append="true" >
<env key="CATALINA_HOME" path="${tomcat.home}"/>
<arg value="/c startup.bat" /> 
 </exec>
 </target>

还有一个比较好的做法是修改tomcat的配置修改conf/context.xml中的内容修改成

[code] <Context antiResourceLocking="true">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐