一尘不染

Tomcat和Eclipse零周转部署

tomcat

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

到目前为止,我从Eclipse的输出中将已构建的类放置在WEB-INF/classesWeb应用程序的文件夹中。

我也有一个可重载的上下文,web.xml作为监视资源。任何编辑/保存到这个文件 重新加载我的Web应用程序,他仅用一秒多-
比建造新的战争文件,并在充分部署要快得多。

但是,我想做的是在编辑任何源文件时触发重新部署。由于.class文件在Tomcat中被修改,看来我只需要监视WEB- INF/classes文件夹及其子文件夹中的所有更改。

我已经读到可以在Tomcat的资源中添加其他受监视的资源,context.xml但这似乎并不是我真正需要的资源-
除非可以指定要监视的目录(包括递归监视子文件夹和文件)?

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

因此,从本质上讲,我的问题是我可以监视整个类文件夹(不包含每个WatchedResource显式文件夹)以触发Tomcat中的重新部署吗?

如果没有,touch每当我将源文件保存在该项目中时,是否可以将Eclipse配置为web.xml文件?我在Windows系统上进行开发。:(


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


更新资料

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

如果您希望Catalina监视/ WEB-INF / classes /和/ WEB-INF /
lib中的类是否有更改,请设置为true,并在检测到更改时自动重新加载Web应用程序。

仅对web.xml的更改似乎会触发重新加载。这是错误还是我的设置不正确?

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

docBase="webapps/someExample"

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


阅读 220

收藏
2020-06-16

共1个答案

一尘不染

对于这些情况,我将您的Eclipse构建输出设置为WEB-INF / classs,并在项目中创建一个docBase设置为webapp文件夹(WEB-
INF的父级)的上下文文件。手动将其放置在conf / Catalina /
localhost中(假设server.xml的某些元素具有默认配置)。最终结果是tomcat最终从开发目录中投放。因此,更改servlet或其他类,然后将其更新到classes文件夹。保存一个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" />
2020-06-16