首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sysdeo - java类的热部署导致整个应用程序重新启动。

Sysdeo - java类的热部署导致整个应用程序重新启动。
EN

Stack Overflow用户
提问于 2010-06-01 03:00:37
回答 2查看 5.4K关注 0票数 3

我在windows上使用了带有Eclipse3.5.1(伽利略)和tomcat 5.5.23的sysdeo tomcat插件3.2.1。我可以让tomcat插件在eclipse中工作,并将devloader.zip提取到tomcat\server\类中。我还更新了上下文,现在有了以下条目:

代码语言:javascript
复制
<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>

我已经激活了devloader (在Project > Properties > Tomcat > Devloader中),并且“检查”了我的所有类和jars,我没有“检查”Common-loggin.jar jsp-api.jar,servlet-api.jar。

因此,在通过插件启动tomcat时,我可以让它使用devloader运行,如eclipse控制台视图所示。

代码语言:javascript
复制
[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

但是,如果我甚至将一个System.out.println添加到任何java文件中并保存它,整个应用程序就会重新加载(大约需要80秒),这就像停止/启动tomcat本身一样。我尝试过在-Xdebug中添加JAVA_OPTS中的catalina.bat,但没有结果:

你能指点我可能做错了什么吗?

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

你能指导我怎么做吗?

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

EN

回答 2

Stack Overflow用户

发布于 2010-10-13 13:44:45

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

票数 0
EN

Stack Overflow用户

发布于 2012-05-03 15:50:34

我知道这是一个旧线程,但是如果您从上下文条目中删除reloadable="true"呢?

来自Tomcat网站:

如果希望Catalina监视/ web / classes /和/web/lib中的类以查看更改,则将

设置为true,并在检测到更改时自动重新加载web应用程序。此特性在应用程序开发过程中非常有用,但它需要大量的运行时开销,不建议在部署的生产应用程序上使用。这就是为什么该属性的默认设置为false的原因。但是,您可以使用Manager应用程序按需触发已部署应用程序的重新加载。

我不知道true在那里为您做了什么,就像我用它进行代码更改时一样( false (或缺席)),它仍然会找到这些更改并对它们进行热部署(尽管我的docBase设置为工作dir)。如果将一个新的类或JAR添加到相应的路径中,可能会更有用吗?或者如果您不使用您的工作dir作为您的docBase?是的,我打赌这更适合后一种情况,这样Eclipse/Tomcat将发现本地代码中的更改,然后将其推送到远程版本(对于Eclipse,而不一定是您的机器).因此,如果确实将docBase设置为工作目录,则可能永远不需要将reloadable设置为true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2947069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档