【发布时间】:2013-02-27 19:03:25
【问题描述】:
我在一个部署在 cloudfoundry 上的战争档案中有一个 webapp。
该应用使用的其中一个库(“somelib.jar”)是由另一位开发人员制作的。
我想让他上传几个不同版本的somelib.jar 并测试应用程序的行为。
我已设法将 jar 上传到部署的 WEB-INF/lib 目录。我还设法将罐子解压到WEB-INF/classes。但是,我还没有设法获得要使用的新版本的 jar。我尝试了各种 hack,例如 this question 和 this question 中描述的那些,但没有任何运气。
每次都使用第一次加载的类/jar,即使我们替换上述目录中的实际 .class 或 .jar 文件。
有什么简单的方法可以实现我想要的吗?
注意:由于我无法控制 Tomcat(它在哪里运行),我无法配置 Tomcat 或对服务器进行任何更改。我只是控制我的战争文件,所以一切都需要以编程方式完成。
编辑:我想要这个的原因是为了减少我们的测试时间。目前有人给了我一个新版本的somelib.jar,我将它重新打包到我的应用程序中,上传到CF,给他发送通知,然后他测试新jar的行为。我更希望他直接将他的 jar 上传到 CF,并在他有新版本时进行测试,而不会造成不必要的中间延迟。
【问题讨论】:
-
您可以删除一个全新的war 文件,因为webapp 目录通常会进行热部署,除非在tomcat 中关闭该配置。这只允许您一次运行一个版本,但它会在不重新启动的情况下进行“热部署”。这有问题,没有人会认真考虑在生产环境中这样做。
-
我不敢相信没有简单的解决方案。随着 PaaS 的出现,客户越来越可能不喜欢被打扰或控制服务器配置。
-
您遇到的是流程问题,而不是技术问题。如果您想要一个简单的解决方案,请为每个团队成员提供一个测试环境,并让他们能够构建自己的可部署 WAR。
-
我设法使用标准的 java 反射 API 让它工作。当我有时间时,我会把解决方案放在这里。如果有人有兴趣,请在这里评论。
标签: java tomcat cloud-foundry hotswap web-inf