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文件,内容如下(注意每行的结尾没有任何空格)
然后在你的配置文件中加入以下内容
还有几个属性需要设置,大家自己完善其中需要注意的是tomcat.manager.url,可以参考下面
这样就可以参考以下代码,使用tomcat的API操作tomcat了
比较极限的解决方案是是关闭tomcat,删除文件后在重启。相应的ant配置如下
还有一个比较好的做法是修改tomcat的配置修改conf/context.xml中的内容修改成
还有一种方案就是使用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">
相关文章推荐
- failed to open stream解决办法-关于WIN主机下配置PHP的若干问题解决方案总结
- SVN上传文件提示磁盘空间不足的问题 Could not write svndiff to temp file: 磁盘空间不足”报错的解决方案
- Ubuntu升级到16.04后出现"Failed to start Load Kernel Modules"问题的解决方案
- ant批量运行Jmeter脚本遇到 Content is not allowed in prolog.问题及解决方案
- Vista&Win7下CreateRemoteThread应用的若干问题和解决方案
- Eclipse正在使用Ant扑灭Android数据包错误的解决方案 – Perhaps JAVA_HOME does not point to the JDK
- android中The connection to adb is down,问题和解决 AndroidEclipseAntXML
- Eclipse中使用Ant打Android包报错解决方案 – Perhaps JAVA_HOME does not point to the JDK
- 微信小程序 openid及支付的若干问题解决方案
- Ext.Net/ExtJs:关于TextField控件内size、maxLength控制文本框输入字符长度属性失效问题分析以及解决方案
- Call to unavailable function 'system': not available on iOS问题的解决方案
- unable to resolve superclass of 问题的解决方案
- "解决方案可能受源代码管理器控制..MSSCCPRJ.SCC.."问题及其解决方法
- Vista&Win7下CreateRemoteThread应用的若干问题和解决方案
- CodeBlocks 出现undefined reference to `GetOpenFileNameA@'问题时解决方案
- Call to unavailable function 'system': not available on iOS问题的解决方案
- Data too long for column ‘表名’ at row 1的若干解决方案(mysql编码转换的问题、中文乱码)
- VC6.0中基于MSFlexGrid的可编辑表格的制作及其若干问题的解决方案
- SWT Browser 渲染 HTML 页面内容若干问题的解决方案
- The connection to adb is down, and a severe error has occured问题解决方案