我正在处理一个遗留的 Java Enterprise 服务器项目,目前我正在尝试设置夜间构建。我们正在使用 Maven 2、JBoss 4.2 和 Bamboo。我们的想法是我们在我们的一个开发服务器上有一个 Bamboo 代理,并且 Maven 构建被配置为硬部署生成的 .ear 文件,然后重新启动服务器。(我们不能使用软部署,因为我们的遗留应用程序使用了一个在取消部署期间导致异常的库......我们将在某个时候摆脱那个该死的库,但还不是现在。)当我运行 Maven 时,这很好用在我自己的机器上构建:服务器已停止并使用最新版本重新启动。
但是,在开发服务器上,我们有多个 JBoss 服务器实例,绑定到不同的 IP 地址。而我使用的 Maven JBoss 插件只能启动和停止绑定到 localhost 的服务器(默认)。我刚刚下载了它的源代码,它只是在 JBoss bin 目录中执行运行和关闭脚本,如下所示:
launch( "run", "-c " + serverName );
和
launch( "shutdown", "-S" );
分别。如您所见,启动时没有使用主机绑定 (-b) 参数,除了在端口 localhost:1099(默认 JNDI 端口)侦听的服务器之外,关闭也不会杀死任何其他服务器。
我认为启动的解决方法是直接在 JBoss 配置文件中配置所需的主机地址。(默认行为是那些配置文件包含一个类似的系统属性${jboss.bind.address}
,并且在启动时,JBoss 动态地将这些替换为指定为运行脚本的 -b 参数的实际主机地址,或默认为 localhost)。因此,如果我将确切的 IP 直接放在这些配置文件中,理论上服务器将绑定到该 IP,而不管缺少 -b 命令行参数。此外,我想使用0.0.0.0
因为主机名也可以解决停止问题......如果我们在同一台机器上没有其他服务器。但是,这可能适用于完全为夜间构建保留的另一台服务器。我们只需要迁移 Bamboo 代理等...几个小时的额外工作。当然,我们没有无穷无尽的未使用服务器供应,所以一旦我们需要为我们的发布分支进行另一个夜间构建,我们可能会回到第 1 格......
另一种方法是尝试使用 Cargo 插件来代替......我还不知道它是否能够使用这个技巧。
最后但并非最不重要的一点是,我实际上可以扩展 JBoss 插件来处理主机绑定——我认为这将花费我几个小时的活动时间,但一劳永逸地解决了这个问题。到目前为止,这在我看来是最可行的选择。
任何人都可以就这些或替代解决方案提供任何具体的经验/评论吗?