java - java Tomcat和 Eclipse 零部署部署

  显示原文与译文双语对照的内容
144 2

我希望能够将代码更改部署到 Tomcat ( 立即接近),而我在 Eclipse 中进行开发。

迄今为止,我将 Eclipse的输出放在了我的web应用程序的WEB-INF/classes 文件夹中。

我还有一个可以重新加载的上下文,web.xml 作为被监视的资源。如果不重新加载一个新的war文件和部署它,任何编辑/保存到这个文件 重新加载我的网络应用程序,比生成一个新的war文件要快,。

但是,我想做的是在编辑任何源文件时触发重新部署。在Tomcat中修改. class 文件时,似乎只需要监视 WEB-INF/classes 文件夹中的任何更改,它是子文件。

虽然可以在tomcat中添加其他监视资源,但这似乎不是我需要的,除非可以指定一个目录,它将被监视在web上。

<Context>
 <WatchedResource>WEB-INF/web.xml</WatchedResource>
 <WatchedResource>WEB-INF/someother.file</WatchedResource>
 <Manager pathname=""/>
</Context>

所以基本上,我的问题是我可以查看整个类文件夹( 不包括每个 WatchedResource ) 来触发Tomcat中的重新部署?

如果没有,我可以在该项目中保存源文件时,将 Eclipse 配置为 touch 文件?我正在开发一个 Windows 系统。: (

PS我对JRebel产品不感兴趣。任何答案都应该是免费免费的解决方案。

更新

根据Tomcat文档,应该通过将上下文设置为可以重新加载来监视 classes folder:

如果希望Catalina监控/WEB-INF/classes/和/WEB-INF/lib 中的类,然后自动重新加载web应用程序,如果检测到更改,则设置为 true 。

对 web.xml的更改似乎触发了重新加载。这是 Bug 还是我的安装不正确?

另外,我已经阅读了有关为给定上下文设置 docBase 属性的信息:

docBase="webapps/someExample"

这似乎接近我所需要的,因为我可以在 Eclipse 中重新发布。唯一的问题是我需要在Tomcat中同时运行几个web应用程序/servlet,在同一个端口上。

时间:原作者:0个回答

81 2

对于这些情况,我将 Eclipse 构建输出设置为 WEB-INF/classes,并在项目中使用docBase设置为 web ( WEB-INF的父级) 文件夹创建一个上下文文件。这是手动放置在 conf/Catalina/localhost ( 假设 server.xml 某些元素的缺省配置) 。最终结果是tomcat最终从开发目录中得到服务。因此,更改servlet或者其他类,它将被更新为类文件夹。保存一个 jsp,它立即可用。

如果项目结构如下:

src
|-main
 |-webapp
 |-images
 |-js
 |-WEB-INF
 |-jsp
 |-classes

那么上下文就像:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/path" reloadable="true" 
 docBase="<pathtoproject>/src/main/webapp"/>
原作者:
...