我试图弄清楚如何通过相当慢的 VPN 连接将一个巨大的(40-50 MB)EAR 文件部署到服务器。 EAR 包含在 Glassfish 中创建的 EJB 和 WAR 项目,并且 90% 的文件大小来自使用的外部依赖库。

  • 有没有人想出一种从 Netbeans 优雅地部署到生产系统的策略,其中部署(通过网络)只针对真正需要的东西(即只有一个 WAR,而不是整个 EAR,或者只是一个库,而不是整个库子项目)。
  • 与第一点相关,如何在 Netbeans 中从项目中分离外部依赖库,以便项目在开发机器上编译,但是当创建 EAR/WAR/EJB 时它不包含所有依赖 JAR,这使得它巨大的。

  • 也许我们需要编写自定义 Ant 脚本?开始使用maven?

    谢谢大家热心解答

    博佐

    最佳答案

    这就是为什么将您的依赖项移出 EAR 并移入共享目录是一个坏主意的原因:通过将所有依赖项保留在 EAR 中,应用服务器能够干净地取消部署/重新部署该 EAR 并回收它在 EAR 中使用的空间JVM 堆(对于 Sun JVM,permgen)。如果您将某些依赖项移动到共享库中,您将面临风险,这些依赖项将维护对 EAR 中定义的某些对象的硬引用。这意味着无法删除 EAR 类,最终您的应用服务器将在 permgen 空间用完后崩溃。

    我对 SSH 的建议基于“VPN”意味着 Windows SMB,它在复制文件时有很多来回通信的假设。使用 SSH(或更准确地说,SCP 或 RSYNC),您可以使用连接的全部带宽。

    如果这仍然太慢,您应该考虑更改您的基础架构。由于 VPN 对我来说意味着企业网络,也许您可​​以在与部署机器相同的网段上设置构建机器。从流程的角度来看,无论如何这是一个更好的主意:您不应该从开发人员工作站部署构建。相反,您应该将源代码 check out 到一个干净的环境中,进行构建、运行测试,然后进行部署。

    另一种方法是查看您的特定应用程序服务是否支持“爆炸耳朵”——如果是,那么您只需上传已更改的 JAR。

    关于jakarta-ee - 巨大的 EAR 部署,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1567360/

    10-17 01:02