如何从 Maven 启动和停止 JBoss 服务器,绑定到与 localhost 不同的地址?
Posted
技术标签:
【中文标题】如何从 Maven 启动和停止 JBoss 服务器,绑定到与 localhost 不同的地址?【英文标题】:How to start and stop a JBoss server from Maven, bound to a different address than localhost? 【发布时间】:2011-01-12 13:59:32 【问题描述】:我正在处理一个遗留的 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 插件来处理主机绑定 - 我认为这将花费我几个小时的活动时间,但一劳永逸地解决了这个问题。到目前为止,这在我看来是最可行的选择。
谁能提供任何关于这些或替代解决方案的具体经验/cmets?
【问题讨论】:
【参考方案1】:Maven Cargo 插件允许声明一个<systemProperties>
,它在 JVM 中设置系统属性,因此应该可以像这样配置插件:
<container>
...
<systemProperties>
<jboss.bind.address>192.168.1.10</jboss.bind.address>
</systemProperties>
</container>
另一个例子见this page。
请注意,CARGO-405 关于使用<systemProperties>
为jboss.bind.address
但状态确实不清楚。
就我个人而言,我只是花时间在 Cargo 中进行测试,设置插件不会花费太多时间(比扩展 JBoss 插件要少)。查看Maven2 Plugin Reference Guide 和Maven2 Plugin Getting Started。
【讨论】:
感谢您的帮助 Pascal,不幸的是,由于上述库需要额外的类路径设置才能运行,因此我无法使其适用于我们的应用程序 :-( 对于更多“标准”应用程序,它不过可能会起作用。我现在将回到 JBoss Maven 插件... Péter【参考方案2】:好吧,我扩展了插件以处理非默认主机名和命名端口。至少这个特殊的问题现在已经解决了。
我将补丁提交给 Codehaus。
更新:它将在 1.4.1 版本中正式发布。
同时,如果有人急需补丁插件版本,请告诉我。
【讨论】:
以上是关于如何从 Maven 启动和停止 JBoss 服务器,绑定到与 localhost 不同的地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?
如何从 Eclipse 运行和调试 JBoss EAP 6?