通过命令行在 Jboss 7.0.1 中部署战争

Posted

技术标签:

【中文标题】通过命令行在 Jboss 7.0.1 中部署战争【英文标题】:Deploying war in Jboss 7.0.1 through Commandline 【发布时间】:2012-01-15 07:21:39 【问题描述】:

我有一个war 文件,我需要将它部署在Jboss 7.0.1 服务器上。现在我浏览了文档,但没有找到任何部署war文件的东西。此外,为了通过命令行部署您的构建,您通常必须使用 maven。那么我们也需要战争吗?如果有,会影响war文件吗?

仅供参考:我正在使用 linux (CentOs5)...

【问题讨论】:

【参考方案1】:

您可以使用管理命令行界面部署 .war 文件。它的具体文档位于此处:JBoss AS7 Admin Guide - Deployment,相关章节如下。您可能还想快速观看视频:5 Ways To Deploy Your Applications To 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.

CLI 部署到独立服务器(一个线性 Shell 命令)

您也可以从 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 文档团队工作,所以我可能会有偏见。

【讨论】:

感谢您提供这样的解释性答案。我在做这个的时候还有一个。我在不同的用户上开始与 jboss-admin.sh 的连接。我尝试在其中部署 mywar.war,但它给了我一个错误,即 Path /home/mobilegw/mywar.war 不存在。如何将 mywar.war 添加到其他用户? 最好单独提出具体问题,如果这个问题得到了回答,那么其他人搜索会找到最相关的问题。查看您的问题历史记录,我大致了解您希望使用这些应用程序/手机/FB 做什么。听起来是个有趣的项目。【参考方案2】:

上面的答案让我很困惑。所以,这里是简单的解决方案 并为我工作。

确保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"

这就是我们需要做的。

快乐学习..

【讨论】:

以上是关于通过命令行在 Jboss 7.0.1 中部署战争的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jboss Tools Eclipse 插件在 Jboss 中“热”部署战争依赖项?

如何修改 Jboss 部署战争文件中的文件?

jboss中同一战争的多个上下文路径

在不重新部署的情况下更新 jboss EAP 7 上的现有战争

如何从 Jboss EAP 6.4 中部署的所有战争的 manifest.mf 文件中获取实现版本详细信息

在 JBOSS 6 EAP 中部署一个在 JBOSS AS 5 中工作的简单 WAR 应用程序的问题