Mic*_*ael 16 java eclipse tomcat hotdeploy eclipse-wtp
我希望能够将代码更改部署到Tomcat(即将发布),而我正在Eclipse中进行开发.
到目前为止,我有Eclipse的输出,将构建的类放在WEB-INF/classes我的Web应用程序的文件夹中.
我还有一个可重新加载的上下文,web.xml作为一个受监视的资源.任何编辑/保存到这个文件并重新加载我的Web应用程序,他仅用一秒多-比建造新的战争文件,并在充分部署要快得多.
但是,我想要做的是在编辑任何源文件时触发重新部署.由于在Tomcat中修改了.class文件,我似乎只需要监视WEB-INF/classes文件夹及其子项中的任何更改.
我已经读过,我可以在Tomcat中添加额外的监视资源,context.xml但这似乎不是我需要的 - 除非可以指定一个将被监视的目录(包括递归监视子文件夹和文件)?
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/someother.file</WatchedResource>
<Manager pathname=""/>
</Context>
Run Code Online (Sandbox Code Playgroud)
基本上,我的问题是我可以在整个类文件夹(不包括每个WatchedResource显式文件夹)中触发在Tomcat中重新部署吗?
如果没有,touch每当我在该项目中保存源文件时,是否可以将Eclipse配置为web.xml文件?我正在开发Windows系统.:(
PS我对JRebel产品不感兴趣.任何答案都应该是免费解决方案.
更新
根据Tomcat 文档,应该通过将上下文设置为reloadable来监视classes文件夹:
如果您希望Catalina监视/ WEB-INF/classes /和/ WEB-INF/lib中的类以进行更改,则设置为true;如果检测到更改,则自动重新加载Web应用程序.
只有对web.xml的更改才会触发重新加载.这是一个错误还是我的设置不正确?
另外,我已经阅读了有关docBase为给定上下文设置属性的信息:
docBase="webapps/someExample"
Run Code Online (Sandbox Code Playgroud)
这似乎接近我的需要,因为我可以在Eclipse中快速重新发布.我唯一的问题是我需要在同一端口等同时在Tomcat中运行多个web应用程序/ servlet.
对于这些情况,我将eclipse构建输出设置为WEB-INF/classes,并创建一个上下文文件,其中docBase设置为项目中的webapp文件夹(WEB-INF的父级).这是手动放置在conf/Catalina/localhost中(假设server.xml的某些元素的默认配置).最终结果是tomcat最终从开发目录服务.因此,更改servlet或其他类,它将更新到classes文件夹.保存一个jsp,它立即可用.
如果项目结构如下:
src
|-main
|-webapp
|-images
|-js
|-WEB-INF
|-jsp
|-classes
Run Code Online (Sandbox Code Playgroud)
然后上下文就像:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/path" reloadable="true"
docBase="<pathtoproject>/src/main/webapp" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |