Java Tomcat:Tomcat如何在内部卸载类?
我正在寻找一种方法,在不停止整个应用程序的情况下,用新功能替换一个jar。我在谷歌上搜索了一下(,),找到了3种可能的解决方案:Java Tomcat:Tomcat如何在内部卸载类?,java,spring,tomcat,osgi,classloader,Java,Spring,Tomcat,Osgi,Classloader,我正在寻找一种方法,在不停止整个应用程序的情况下,用新功能替换一个jar。我在谷歌上搜索了一下(,),找到了3种可能的解决方案: OSGI看起来太复杂了:从这个强大的规范中,我只需要卸载类 自己的实现,这意味着创建自己的类加载器,在它的帮助下加载jar,当需要关闭jar时,向GC公开类加载器实例,并希望GC将其与所有加载的jar一起删除,这可能不会立即发生 复制应用程序服务器所做的工作:)这就是我问题的目的 关于Tomcat如何卸载类(wars)有什么解释吗?是否可以在我的应用程序中重用此功能?
我只能部分回答你的问题,但总比什么都不回答好。。。您是对的,模块化是一个相当乏味的话题(至少在出现Java9之前是如此)
广告创意2(Spring):我已经对Spring Boot进行了一些思考,并得出结论,我将坚持OSGI(值得一试)或纯微服务架构。我只能部分回答您的问题,但总比什么都不回答好。。。您是对的,模块化是一个相当乏味的话题(至少在出现Java9之前是如此) 广告创意2(Spring):我已经在Spring Boot上花了一些心思,并得出结论,我要么坚持OSGI(值得一试),要么坚持纯微服务架构。
- 我假设您并没有重新部署整个应用程序,但不希望在每次开发应用程序时都重新启动整个应用程序
- 如果希望在不更改类或方法签名的情况下更改方法的功能,可以使用Spring Loaded
- 将依赖项添加到项目中
- 设置JVM选项-javaagent:path\springload-version.jar-noverify
- 根据运行tomcat的方式,可以通过多种方式设置此选项
- 我有一个Broadleaf eCommerce网站,我将此选项添加到运行嵌入式tomcat的批处理脚本中的MAVEN_OPTS中,或者您可以为tomcat VM选项配置运行配置
- 阅读
- 我假设您并没有重新部署整个应用程序,但不希望在每次开发应用程序时都重新启动整个应用程序
- 如果希望在不更改类或方法签名的情况下更改方法的功能,可以使用Spring Loaded
- 将依赖项添加到项目中
- 设置JVM选项-javaagent:path\springload-version.jar-noverify
- 根据运行tomcat的方式,可以通过多种方式设置此选项
- 我有一个Broadleaf eCommerce网站,我将此选项添加到运行嵌入式tomcat的批处理脚本中的MAVEN_OPTS中,或者您可以为tomcat VM选项配置运行配置
- 阅读