文档章节

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

twentwo
 twentwo
发布于 2015/08/14 22:07
字数 1134
阅读 99
收藏 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
JBoss EAP 7 Beta 发布,JBoss 企业应用平台

JBoss EAP 7 Beta 发布了,下载地址:http://www.jboss.org/products/eap/download/ JBoss AS是最成功的开源Java项目之一,具备架构先进、使用简单、技术创新等特性。自1999年面世至今,JBo...

红薯
2016/02/16
872
1
Errai 3.0 M2 发布,全新的开发模式

最新的 Errai 3.0 里程碑 —— M2 带来了新的使用 JBoss 7(或者 Wildfly 8)的新开发模式设置。 Errai 的实例可使用如下两种方式部署: 使用嵌入式 Jetty 服务器 手工在 JBoss AS 实例中部署...

红薯
2013/11/08
1K
15

没有更多内容

加载失败,请刷新页面

加载更多

mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
47分钟前
2
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
58分钟前
3
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
今天
13
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
今天
4
1
手动部署kubernetes集群(1.13.1最新版)

一、机器规划 使用五台机子部署k8s集群,规划如下: master节点3台(同时也是etcd节点) node节点2台 ip分配如下: ip:192.168.10.101,主机名:k8s-etcd01 ip:192.168.10.102,主机名:k8s...

人在艹木中
今天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部