gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:54:05 24 4
gpt4 key购买 nike

我在 Windows XP 上使用 sysdeo tomcat 插件 3.2.1 和 eclipse 3.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>

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

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

[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 本身一样好。我试过在 catalina.bat 的 JAVA_OPTS 中添加 -Xdebug 但没有成功:(

能否请您指导我可能做错的地方..

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

你能指导我如何去做吗?

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

最佳答案

我知道这是一个旧线程,但是如果您从 Context 条目中删除 reloadable="true" 会怎么样?

来自 Tomcat 站点:

Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. That's why the default setting for this attribute is false. You can use the Manager web application, however, to trigger reloads of deployed applications on demand.

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

关于tomcat - Sysdeo Tomcat DevLoader - Java 类的热部署导致整个应用程序重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com