文档章节

Maven 远程部署项目到jboss-as-7

twentwo
 twentwo
发布于 2015/08/14 22:07
字数 1134
阅读 92
收藏 0

最近在看许晓斌(Juven Xu)编写的《Maven实战》,书中提到Maven远程部署项目到服务器。刚好最近做的项目在测试阶段,不过测试环境用的服务器是Jboss(jboss-as-7.1.0.Final),遂开始折腾。以jboss-as-7.1.1.Final为例。


一、启动Jboss

安装Jboss在Linux下解压即可。启动包括standalone模式和domain模式。

  • standalone模式
  1. 简单开启服务器的命令:进入到 bin 目录下,执行命令。
    ./standalone.sh

这种开启服务器的方式有个缺点,当你的命令窗口关闭后,服务自动down了。

  1. 让服务器开启后在后台运行:进入到bin目录下,执行命令。
    nohup ./standalone.sh&
            或
    nohup ./standalone.sh run&

这样服务器就会在后台运行,即使关闭命令窗口,服务器依然运行。服务需关闭时,采用ps -ef | grep jboss,查看进程号,然后kill -9 进程号,再重启。

执行nohup命令,控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。 附:简单而有用的nohup命令

  • domain模式

该模式暂不叙述。

二、配置Jboss

默认Jboss只绑定在本地127.0.0.1外网无法访问。需配置standalone的配置文件。

第一步,打开${JBOSS_HOME}/standalone/configuration/standalone.xml

第二步,查找到如下配置

<interfaces>
    <interface name="management">
         <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    </interface>
</interfaces>

127.0.0.1改成0.0.0.0,这样外网就能访问Jboss,同时可以进入管理模式。

第三步,设置URI编码,将以下内容插入到standalone.xml文件中<extensions></extensions>节点之后。

<system-properties>
     <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
     <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>

第四步,保存重启。

三、部署Jboss

如下图中描述了部署应用的四种方式:

20131005120052140.png

  • Administration UI Console
  • Command Line Console
  • Maven Plugin
  • copy

在此之前我们建立一个初始化管理账户,进入${JBOSS_HOME}/bin下,执行

    ./add-user.sh 

选择Management User,如下图

20131004220923734.jpg

如上,在提示输入username和password时输入相应的用户名和密码,我们随后会使用它登录管理控制台。

  1. Administration UI Console部署

访问http://127.0.0.1:9990/console(本地)或http://serverIP:9990/console(外网)进入管理界面,该模式是图形化界面,不再赘述。

  1. Command Line Console部署

执行./jboss-cli.sh进入到Command Line Console界面

[twen@localhost bin]$ ./jboss-cli.sh  
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.  
[disconnected /] connect   
[standalone@localhost:9999 /]

使用deploy命令部署XXX.war

[standalone@localhost:9999 /] deploy /dir/target/XXX.war

同样使用undeploy

[standalone@localhost:9999 /] undeploy XXX.war
  1. Maven Plugin

利用插件前先执行mvn clean package打包,确保在target目录下有war存在。

  • jboss-as-maven-plugin

配置Maven

<plugin>
  <groupId>org.jboss.as.plugins</groupId>
  <artifactId>jboss-as-maven-plugin</artifactId>
  <version>7.1.1.Final</version>
  <configuration>
	<hostname>serverIP</hostname>
	  <port>9999</port>
	  <username>user</username>
	<password>pass</password>
  </configuration>
</plugin>
  • cargo-maven2-plugin*荐

Maven配置

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <version>1.4.14</version>
  <configuration>
	<!-- Container configuration -->
	<container>
		<timeout>60000</timeout> <!-- 1 minutes -->
		<containerId>jboss71x</containerId>
		<type>remote</type>
	</container>

	<!-- Configuration to use with the container -->
	<configuration>
		<type>runtime</type>
		<properties>
			<cargo.hostname>serverIP</cargo.hostname>
			<cargo.jboss.management-native.port>9999</cargo.jboss.management-native.port>
			<cargo.remote.username>user</cargo.remote.username>
			<cargo.remote.password>pass</cargo.remote.password>
		</properties>
	</configuration>
	<!-- Deployer configuration -->
	<deployer>
		<type>remote</type>
	</deployer>
  </configuration>
  <dependencies>
	<dependency>
		<groupId>org.jboss.as</groupId>
		<artifactId>jboss-as-controller-client</artifactId>
		<version>7.1.0.Final</version>
	</dependency>
  </dependencies>
</plugin>

这样利用Maven Plugin就可以执行mvn jboss-as:deploy(mvn cargo:deploy)等命令了。

  1. copy

拷贝war包到${JBOSS_HOME}/standalone/deployments目录,在该目录下会创建war包名.dodeploy文件,说明正执行部署,完成后会生成war包名.deployed文件,说明部署成功。


四、遇到的坑

  1. 没在配置文件中修改端口的时候执行mvn jboss-as:deploy,报错log如下:
    Could not connect to remote://serverIP:9999. The connection timed out...

解决方法见二、配置Jboss第二步。${jboss.bind.address.management:127.0.0.1}127.0.0.1改成0.0.0.0

  1. 远程部署后,当Jboss启动时,应用报错,但Jboss仍然启动了。这时候将XXX.war的文件删除,在此启动Jboss报错如下:
[Host Controller] 09:03:13,042 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "XXX.war")]) - failure description: "JBAS010876: No deployment content with hash 5f870cae18c7f6f29b8964e18895199c3754de09 is available in the deployment content repository for deployment 'ez-message.war'. This is a fatal boot error. To correct the problem, either restart with the --admin-only switch set and use the CLI to install the missing content or remove it from the configuration, or remove the deployment from the xml configuraiton file and restart."

解决方法,修改${JBOSS_HOME}/standalone/configuration/standalone.xml配置文件,把<deployments/>内容删除。

<deployments>
     <deployment name="XXX.war" runtime-name="XXX.war"/>
</deployments>

注:远程部署时将war包上传至${JBOSS_HOME}/standalone/data/content目录下。

  

© 著作权归作者所有

共有 人打赏支持
twentwo
粉丝 1
博文 32
码字总数 14094
作品 0
杭州
程序员
JBoss 系列二十八:JBoss Data Grid(Infinispan)CarMart 示例

JBoss Data Grid是Red Hat中间件产品(http://www.redhat.com/products/jbossenterprisemiddleware/data-grid/),JBoss Data Grid是基于开源社区产品Infinispan(http://infinispan.org/)。......

无鸯
2014/02/04
0
0
【转】JBoss AS 7 快速上手

JBoss AS7 最近发布了 7.0.0.CR1 版本,CR意即Candidate Release(候选发布版),是JBoss AS在Alpha → Beta之后相对比较完整的一个版本,包含了CDI,JAX-RS等诸多重要特性。这次的7.0.0.CR1...

mj4738
2012/02/16
0
0
nexus 环境搭建 以及项目上传

1、Nexus下载 2、Nexus启动 解压后进入nexus-2.1.2-bundlenexus-2.1.2binjsw,根据操作系统类型选择文件夹,我选的是windows-x86-32文件夹,进入后可看到如下所示bat文件。 双击console-nex...

jdk2010
2015/08/11
0
0
JBoss6【基础】简介(未整理)

JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器 因为JBoss代码遵循LGPL许可,你可以在任何商业应用中免费使用它,而不用支付费用 2006年,Jboss公司(http://jboss...

小99
2014/03/18
0
0
JBoss 系列二:使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境

什么是企业应用集群 集群是指把不同的服务器集中在一起,组成一个服务器集合,这个集合给客户端提供一个虚拟的平台,使客户端在不知道服务器集合结构的情况下可以对这一服务器集合进行部署应...

无鸯
2014/02/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部