通过命令行在Jboss 7.0.1中部署war文件

7

我有一个war文件,需要在Jboss 7.0.1服务器上部署。现在我已经阅读了文档,但没有找到任何关于如何部署war文件的信息。通常情况下,如果要通过命令行部署构建,您需要使用Maven。那么对于war文件也是这样吗?如果是这样,它会影响war文件吗?

附注:我正在使用Linux(CentOs5)...

2个回答

15
您可以使用管理命令行界面部署一个.war文件。有关此操作的具体文档位于此处:JBoss AS7管理指南 - 部署,包括以下相关部分。您可能还想快速观看视频:5种将应用程序部署到JBoss AS7的方式

在受管域中使用CLI进行部署

分发部署二进制文件的过程涉及两个步骤:您需要将部署上传到域控制器可从其内容分发的存储库中。在第二步中,您需要将部署分配给一个或多个服务器组:

使用CLI,您可以一次完成所有步骤:

[domain@localhost:9999 /] deploy ~/Desktop/test-application.war
Either --all-server-groups or --server-groups must be specified.

[domain@localhost:9999 /] deploy ~/Desktop/test-application.war --all-server-groups
'test-application.war' deployed successfully.

[domain@localhost:9999 /] deploy --help
[...]

使用 "deploy" 命令上传二进制文件后,它将可用于域控制器并分配给服务器组:

[domain@localhost:9999 /] :read-children-names(child-type=deployment)
{
   "outcome" => "success",
   "result" => [
       "mysql-connector-java-5.1.15.jar",
       "test-application.war"
   ]
}

[domain@localhost:9999 /] /server-group=main-server-group/deployment=test-application.war:read-resource
{
   "outcome" => "success",
   "result" => {
       "enabled" => true,
       "name" => "test-application.war",
       "runtime-name" => "test-application.war"
   }
}

以类似的方式可以将其从服务器组中移除:

[domain@localhost:9999 /] undeploy test-application.war --all-relevant-server-groups
Successfully undeployed test-application.war.

[domain@localhost:9999 /] /server-group=main-server-group:read-children-names(child-type=deployment)
{
   "outcome" => "success",
   "result" => []
}

在单机服务器上进行CLI部署

在单机服务器上的部署与管理域类似,只是不存在服务器组关联。您可以依靠相同的CLI命令来部署应用程序:

[standalone@localhost:9999 /] deploy ~/Desktop/test-application.war
'test-application.war' deployed successfully.

[standalone@localhost:9999 /] undeploy test-application.war
Successfully undeployed test-application.war.

使用一行Shell命令将CLI部署到独立服务器

你也可以通过Shell一次性部署WAR文件。这在Bash脚本或Unix别名中非常有用。注意:这会暴露密码,只能用于个人开发实例。确保已设置$JBOSS_HOME,并根据需要更改下面的密码、WAR文件路径和名称:

$ $JBOSS_HOME/bin/jboss-cli.sh -u=admin -p=MY_PASSWORD --controller=localhost:9990 --connect --command="deploy /path/to/MY_APP.war --force"

注:正如您所知,您可以使用管理控制台进行部署,也可以使用部署扫描程序。前者像任何GUI一样受欢迎,但后者更适合开发。我尽可能多地使用CLI,因为学习曲线的努力是值得的,可以获得批处理脚本的强大功能和CLI API所暴露的低级操作的规模。非常酷的东西。出于透明度的考虑,我应该补充说,我在AS/EAP文档团队工作,所以可能有偏见。


1
感谢您提供这么详细的答案。我在执行此操作时遇到了另一个问题。我是用不同的用户开始连接jboss-admin.sh。我尝试在其中部署mywar.war文件,但是出现了以下错误: 路径/home/mobilegw/mywar.war不存在。 我该如何在不同的用户中添加我的mywar.war文件? - Ahmed
1
最好单独提出具体问题,如果这个问题已经得到回答,那么其他搜索者将找到最相关的问题。通过检查您的问题历史记录,我对您想要使用这些应用程序/移动设备/FB做什么有一个公正的想法。听起来是一个有趣的项目。 - davidryab

1
上面的答案让我感到困惑..所以,这里是一个简单的解决方案,对我很有效。
  • 确保 jboss 已经在运行。命令ps -ef | grep jboss
  • 导航到 JBSS_HOME/bin/ 并打开 JBOSS CLI。打开 CLI 的命令是 ./jboss-cli.sh
  • 一旦 CLI 打开。你会看到像这样的 [disconnected /]。现在,运行命令 connect。它将显示像这样的 [standalone@localhost:9999 /]
  • 现在,使用以下命令进行部署。 "deploy /YOUR_WAR_PATH.war"。 例如:"deploy /tmp/my_app.war"

这就是我们需要做的全部。

愉快的学习..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接