Sysdeo Tomcat DevLoader—java类的热部署导致整个应用程序重新启动

Sysdeo Tomcat DevLoader—java类的热部署导致整个应用程序重新启动,tomcat,eclipse-plugin,Tomcat,Eclipse Plugin,我在WindowsXP上使用sysdeo tomcat插件3.2.1和Eclipse3.5.1(Galileo)以及tomcat 5.5.23。 我可以让tomcat插件在eclipse中工作,并将devloader.zip提取到[tomcat]\server\classes中。 我还更新了上下文,现在它有以下条目: <Context path="/myapp1" reloadable="true" docBase="F:\Work\eclipse_workspace\myapp1" wo

我在WindowsXP上使用sysdeo tomcat插件3.2.1和Eclipse3.5.1(Galileo)以及tomcat 5.5.23。 我可以让tomcat插件在eclipse中工作,并将devloader.zip提取到[tomcat]\server\classes中。 我还更新了上下文,现在它有以下条目:

<Context path="/myapp1" reloadable="true" docBase="F:\Work\eclipse_workspace\myapp1" workDir="F:\Work\eclipse_workspace\myapp1\work" >
    <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
    <Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1" useSystemClassLoaderAsParent="false" />
</Context>
但是,如果我在任何java文件中添加一个System.out.println并保存它,整个应用程序都会被重新加载(大约需要80秒),这与停止/启动tomcat本身一样好。 我尝试在catalina.bat的JAVA_OPTS中添加-Xdebug,但没有成功:(

你能告诉我哪里做错了吗

请注意,我可以在tomcat上“重新部署”整个应用程序,但这不是我需要的,我希望能够在编码/调试时“动态”对java类进行小的更改,而无需等待应用程序完全重新启动。另一个烦恼是重新启动tomcat/应用程序会导致会话/调试进度丢失。

你能告诉我怎么做吗


PS:我没有显式地使用任何ant/maven脚本,只是依靠eclipse为我进行构建(确实如此)。

如果您不需要加载DevLoader,并且错误地单击了eclipse中的某个内容:open server.xml,删除指向DevLoader的上下文,然后尝试启动Tomcat。您不会得到任何错误(前提是您不需要Devloder)。

我知道这是一个旧线程,但是如果您从上下文条目中去掉
reloadable=“true”
,会怎么样

从Tomcat站点:

如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib中的类的更改,并在检测到更改时自动重新加载WEB应用程序,请将其设置为true。此功能在应用程序开发期间非常有用,但需要大量运行时开销,不建议在已部署的生产应用程序上使用。这就是为什么此属性的默认设置为false。但是,您可以使用Manager web应用程序根据需要触发已部署应用程序的重新加载


我不确定
true
在那里为您做了什么,因为当我用它更改代码
false
(或不存在)时,它仍然会找到更改并热部署它们(尽管我将
docBase
设置为我的工作目录)。如果将新的类或JAR添加到相应的路径中,或者如果您不使用工作目录作为docBase,那么它可能更有用?是的,我打赌这更适用于后一种情况,以便Eclipse/Tomcat将在本地代码中找到更改,然后将其推送到远程版本(对于Eclipse,不一定是您的机器)…因此,如果您将docBase设置为工作目录,您可能永远不需要将
reloadable
设置为
true

嗨,Vani,也许我没有明确说明我的问题。我希望能够更改java代码(在tomcat/sysdeo/eclipse中调试它)。我的问题是,只要保存java类(通过自动构建),tomcat开始重新加载整个应用程序,这将浪费80-100秒。那么,当应用程序在eclipse中运行(调试)时,有没有办法使用sysdeo插件为tomcat“热部署”java类呢
[DevLoader] Starting DevLoader
[DevLoader] projectdir=F:\Work\eclipse_workspace\myapp1
[DevLoader] added file:/F:/Work/eclipse_workspace/myapp1/WEB-INF/classes/
[DevLoader] added file:/F:/Work/eclipse_workspace/myapp1/WEB-INF/lib/activation.jar