0

我需要设置一个包含以下内容的构建开发环境

  • Sonatype Nexus
  • 詹金斯
  • 协作网颠覆

我的应用程序在 GlassFish 应用服务器上运行。我注意到以上三个工具都带有嵌入式应用服务器。我已经下载了每一个并试用了它们,但我有点担心我现在有 4 个应用程序服务器正在运行。

我注意到它们中的每一个都提供了战争文件变体,可以将其拖放到现有的应用服务器上。我认为使用“Collabnet Subversion Edge”我可能没有任何其他选项,因为它没有附带战争安装选项。另外两个可以作为war文件下载。

在同一应用服务器上同时运行 Nexus 和 Jenkins 有什么缺点。有什么缺点吗?我目前正在研究的一个是如何配置它。似乎只有在应用程序服务器对 war 文件进行分解/取消归档后才能对其进行配置。

我也不愿意将这些战争文件放入现有的 Glassfish 实例中,因为它用于正式测试。我想也许我应该安装 Tomcat 并将其用于这些工具。您会建议我坚持使用嵌入式服务器还是只使用一个应用程序服务器并在必要时分配更多内存?这些工具中的任何一个在他们的嵌入式服务器上工作得更好还是没有任何区别?

谢谢

4

3 回答 3

3

所有 3 个工具都可以共享一个 Glassfish(或类似的应用服务器)实例。问题是您需要负责设置合理的内存处理参数。如果一个应用程序导致 Java OutOfMemory 异常,所有应用程序都可能受到影响:-(

如果您检查各种应用程序的启动器脚本,您会发现每个应用程序都为 Java 堆和 permgen 设置设置了不同的默认值。

我的建议是保持每个应用程序隔离并使用嵌入式应用程序服务器。Jenkins 和 Nexus 都相当轻量级(我不使用 Collabnet)。

于 2012-02-06T22:06:58.613 回答
2

Hudson/Jenkins 以及 Nexus 可以在 Tomcat 或 Glassfish 中作为战争文件运行。然而,对于他们来说,首选和最受支持的选项是使用捆绑的应用服务器。

Nexus 在内部使用 Jetty。Hudson 3(来自 Eclipse 的测试版)也是如此。Old Hudson 和 Jenkins 都在内部使用 winstone。这两个都是非常轻量级的容器,并排运行它们的开销应该可以忽略不计。

这些服务器实际执行的操作(运行构建、提供工件等)会对您产生更大的影响。

因此,为了让您的安装、升级和运行时支持更轻松,我建议坚持使用嵌入式默认应用服务器。

于 2012-02-07T19:08:55.130 回答
1

我没有使用过 Jenkins,但我看到 nexus 和 hudson 在一个单独的 tomcat 实例中运行,作为单独的战争运行。对于 nexus,war 版本和独立版本之间的唯一区别是独立版本包含码头,因此您可以独立运行它……但这只是包装器。实际的nexus运行是一样的。

我认为詹金斯也是如此。因此,当您可以在一台服务器上运行 4 个实例时,没有理由运行 4 台服务器。应该可以正常工作,因为它们都有不同的网络上下文。

于 2012-02-06T20:48:34.353 回答