是否有办法让Servlet热重新部署它是其中一部分的way应用程序?
我知道我可以将Tomcat配置为在更改web.xml时进行热重新部署,但我无法从java代码中找到同样的方法。我不想一直看web.xml的变化。
发布于 2013-11-30 20:46:41
我相信使用JMX是可以做到的。
The Tomcat Manager is a web application that can be used interactively (via HTML GUI) or programmatically (via URL-based API) to deploy and manage web applications.有一个链接- http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html
发布于 2013-11-30 20:39:43
Servlet具有依赖于容器的生命周期。这是在这里解释的,http://docs.oracle.com/javaee/5/tutorial/doc/bnafi.html
这意味着从web.xml中,容器根据请求确定匹配,如果存在这样的类,则将其作为类加载器资源加载。一旦发生这种情况,实例将一直加载,直到容器关闭为止,因此替换.class文件实际上不会达到“热部署”,除非您在tomcat的context.xml Attributes中设置了可重新加载的标志。
不管是Tomcat还是非Tomcat,一旦ClassLoader加载了资源,更改.class文件并不能完全改变您可能知道的运行中的.class的行为。因此,即使从文件系统中删除类文件,在普通情况下也不会影响运行中的java进程。
但是,servlet可能会启动一个后台任务,执行要“热部署”的新.class文件的基本文件副本(如果上下文属性'reloadable‘为true)。这将强制重新加载这些类,从而实现热部署。因此,尽管这超出了servlet设计实现的范围,但答案是肯定的。
希望这能有所帮助。
https://stackoverflow.com/questions/20305108
复制相似问题