问题 - 远程热部署,多模块Maven项目

时间:2011-03-08 21:56:06

标签: java java-ee maven weblogic jrebel

我知道这里有很多信息......但可能还有其他人有这样的问题,我认为讨论这个问题会有很大的帮助,或者至少可以得到一些体面的意见/建议。

好的,让我首先概述一下我们的环境。

我们有一个多模块maven项目,大约有11个JAR。依赖于那些内部JAR的是9个WAR文件,其中8个放在EAR文件中。剩余的WAR文件作为单独的应用程序单独部署。当构建8个WAR文件(驻留在EAR中)时,它们被构建为瘦的WAR文件,因此生成的EAR文件的大小最小,并且APP-INF / lib部分中包含所有依赖项。所有这一切都没有问题。我们目前部署到具有大量内存和CPU的远程 WebLogic 10.3服务器,因此负载不在我们各自的计算机上。我们还使用持续集成构建服务器发布夜间快照。

我们正在部署的工件:
包含8个WAR文件,11个内部JAR和第三方库的EAR文件:~70MB
其他WAR文件:~110MB

我们的一些软件工程师希望在家工作,通过VPN连接,并具有增量/热部署选项。否则,由于我们使用web logic / maven进行部署,他们被迫构建一个完整的EAR文件或110MB WAR文件并通过VPN上传。这不好玩,而且速度不快。我一直在阅读 JRebel ,并想知道是否有其他人使用JRebel与多模块maven项目进行远程部署,以及如何有效地进行。

从我的一些阅读中,建议将“更改”上传到服务器并让rebel.xml配置读取特定部署的那些目录......好吧,让我们了解手头的问题。如何告诉Maven将更改的资源/新编译的类文件转储到其他目录,以便我可以将它们上传到服务器和相应的文件夹(我们的服务器托管类似于在各种端口上运行的10多个WebLogic实例,每个实例一个开发者)。或者让开发人员与网络共享他们的工作区文件夹,并配置rebel.xml文件(例如,在JAR中)指向相应的// COMPUTERNAME / workspace / jarProjectName / target / classes文件夹。我预见到的问题是,每次启动WebLogic时,它都会通过网络捕获所有.class和配置文件以及JSP文件,因为rebel.xml文件首先获胜,而且这对VPN很糟糕。在部署完成之后,热部署应该照常工作。我只是不希望在第一次启动时通过网络传输所有类的不必要的开销,不仅如此,有时开发人员在办公室,关闭他们的计算机,然后回家。那么JRebel / WebLogic会发生什么?

看起来更好的想法只是看看各个maven项目中哪些文件发生了变化,并将它们FTP到服务器上的正确位置,以便JRebel可以做到这一点,完全是服务器端。有没有人有一个很好的方法来做到这一点?或者也许某人有一个根本不涉及JRebel的解决方案。我们来谈谈。

3 个答案:

答案 0 :(得分:1)

现在也可以使用JRebel进行远程部署。非常容易设置,无需用于特殊网络配置,打开远程计算机上的端口等。

http://zeroturnaround.com/jrebel/remoting

它依赖于IDE插件,但经验就好像是在本地计算机上进行开发一样

答案 1 :(得分:0)

您应该做的是让每个开发人员运行他们自己的WebLogic本地实例。

WebLogic有相当多的内存使用量,但不得不通过VPN进行部署将是一个失败的主张。这可行的唯一方法是使用LiveRebel。但同样,你仍然会为网络传输付出沉重的代价,特别是在连接缓慢的情况下。

最好在JDeveloper WLS中运行应用程序并删除庞大的WebLogic共享实例。

答案 2 :(得分:0)

为什么不使用samba(http://en.wikipedia.org/wiki/Samba_(software))协议呢?您只需要一个网络驱动器作为共享位置。开发人员可以将编译器路径设置为指向该位置,并且在已部署的应用程序中,rebel.xml路径应指向相同的目录。那就行了。 即使开发人员关闭他的机器,Weblogic也会继续运行。