0

我正在处理一个遗留的 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 插件来处理主机绑定——我认为这将花费我几个小时的活动时间,但一劳永逸地解决了这个问题。到目前为止,这在我看来是最可行的选择。

任何人都可以就这些或替代解决方案提供任何具体的经验/评论吗?

4

2 回答 2

2

Maven Cargo 插件允许<systemProperties>在 JVM 中声明一个设置系统属性的插件,因此应该可以像这样配置插件:

<container>
  ...
  <systemProperties>
    <jboss.bind.address>192.168.1.10</jboss.bind.address>
  </systemProperties>
</container>

有关另一个示例,请参见此页面

请注意,有关于使用for的CARGO-405 ,但状态确实不清楚。<systemProperties>jboss.bind.address

就个人而言,我只是花时间在 Cargo 中进行测试,设置插件不会花费太多时间(少于扩展 JBoss 插件)。查看 Maven2 插件参考指南Maven2 插件入门

于 2010-02-03T23:34:52.863 回答
0

好吧,我扩展了插件来处理非默认主机名和命名端口。至少这个特殊问题现在已经解决了。

我将补丁提交给 Codehaus。

更新:它将在 1.4.1 版本中正式发布。

同时,如果有人急需补丁插件版本,请告诉我。

于 2010-02-08T15:29:38.053 回答