4

我在部署在 cloudfoundry 上的战争档案中有一个 webapp。该应用程序使用的其中一个库 (" somelib.jar") 是由另一位开发人员制作的。

我想让他上传几个不同版本somelib.jar并测试应用程序的行为。我已经设法将 jar 上传到WEB-INF/lib部署目录。我还设法将罐子解压成WEB-INF/classes. 但是,我还没有设法获得要使用的新版本的 jar。我尝试了各种技巧,例如在这个问题这个问题中描述的那些技巧,但没有任何运气。

每次,第一次加载的类/jars 都会在之后使用,即使我们替换了上述目录中的实际.class或文件。.jar

有什么简单的方法可以实现我想要的吗?

注意:由于我无法控制 Tomcat(它在哪里运行),我无法配置 Tomcat 或对服务器进行任何更改。我只是控制我的战争文件,所以一切都需要以编程方式完成

编辑:我想要这个的原因是为了减少我们的测试时间。目前有人给我一个新版本somelib.jar,我将它重新打包到我的应用程序中,上传到 CF,给他发送通知,然后他测试新 jar 的行为。我更喜欢的是他将他的 jar 直接上传到 CF,并在他有新版本时进行测试,而不会造成不必要的中间延迟。

4

3 回答 3

2

为了让您自己控制应用程序服务器,您需要将独立应用程序部署到 Cloud Foundry。

这个博客应该可以帮助你:

http://blog.cloudfoundry.com/2012/05/11/running-standalone-web-applications-on-cloud-foundry/

这样您就可以自定义配置您的 tomcat。

于 2013-02-27T21:59:35.770 回答
2

每次,第一次加载的类/jars 都会在之后使用,即使我们替换了上述目录中的实际 .class 或 .jar 文件

这就是普通 Tomcat (Java EE)类加载的工作方式。您的类在首次部署时被加载,任何更改都将被忽略(JSP 的管理方式略有不同,但仅在开发环境中)。

您应该能够通过使用 Equinox OSGi 桥 servlet来解决这个问题。我自己没有这样做,但这是我尊敬的人的一篇文章

于 2013-02-27T19:33:56.103 回答
2

在 tomcat 7 中,您可以对 WAR 文件进行版本控制,新版本将逐渐生效。

http://www.tomcatexpert.com/blog/2011/05/31/parallel-deployment-tomcat-7

于 2013-02-27T19:07:45.977 回答