本来以为 Tomcat 是不支持热部署的。其实是支持的。
工作环境:
JDK 5,Eclipse 3.1.2,MyEclipse 4.1.1GA、Tomcat 5.5.16
假设工程名称是 Xnews,对应网站为 http://localhost:8080/Xnews
并假设 Tomcat 的安装目录为 %TomcatDir%
在 %TomcatDir%\conf\Catalina\localhost 目录下新建一个配置文件 Xnews.xml,内容如下:
重新启动 Tomcat,之后就可以在 MyEclipse 中使用 Redeploy 进行热部署了。
使用这种设置,每次重新启动 Tomcat 服务,会在 %TomcatDir%\temp 下新建一个项目副本
如 n-Xnews,其中 n 为从 0 开始的数字。
这种情况下使用 request.getRealPath() 方法得到的物理路径其实就是指向这个副本的物理路径而不是在 webapps 中的原始路径。
所以如果要使 request.getRealPath() 指向 webapps 原始路径,那么只能关闭这种热部署设定,即采用默认配置。
工作环境:
JDK 5,Eclipse 3.1.2,MyEclipse 4.1.1GA、Tomcat 5.5.16
假设工程名称是 Xnews,对应网站为 http://localhost:8080/Xnews
并假设 Tomcat 的安装目录为 %TomcatDir%
在 %TomcatDir%\conf\Catalina\localhost 目录下新建一个配置文件 Xnews.xml,内容如下:
<Context docBase="${catalina.home}/webapps/Xnews"
privileged="true" antiResourceLocking="true" antiJARLocking="true">
</Context>
privileged="true" antiResourceLocking="true" antiJARLocking="true">
</Context>
重新启动 Tomcat,之后就可以在 MyEclipse 中使用 Redeploy 进行热部署了。
使用这种设置,每次重新启动 Tomcat 服务,会在 %TomcatDir%\temp 下新建一个项目副本
如 n-Xnews,其中 n 为从 0 开始的数字。
这种情况下使用 request.getRealPath() 方法得到的物理路径其实就是指向这个副本的物理路径而不是在 webapps 中的原始路径。
所以如果要使 request.getRealPath() 指向 webapps 原始路径,那么只能关闭这种热部署设定,即采用默认配置。