在WildFly中运行多个standalone模式的实例
WildFly作为一款优秀的EJB容器,其前身为JBoss AS。JBoss作为一款开源的应用服务器,被广泛的应用在各种项目当中。假设我们现在有这样一个项目,他是以standalone的模式运行在WildFly中,且这个项目在实际产品环境中需要被部署成多个实例,每个实例都会有不同的服务对象,比如不同的国家,不同角色的用户等等。针对于不同的服务对象,在后台的配置也会有些许的不同,比如需要连接不同的数据库等。
面对这种需求,也许你首先考虑到的是我们可以为不同的服务对象编译发行不同的发布包,这样做也许很直观,但是在实际交付过程中却很难行得通。首先,不同的实例也许需要加载一些不同的配置,但是这些配置文件的名字和路径都是都是相对固定的,也就是说你如果想针对不同的实例去加载各自配置文件,你首先需要修改配置,配置文件名甚至路径等等,然后在代码中做种相应的修改去加载他们,这无形中大大的增加了了维护的开销。其次,如果一旦服务的对象很多,那么久意味着需要交付的发行包也会有许多,这无形中会增加项目发布的开销。最后,多个项目实例放在同一个WildFly的instance中,也许会遇到一些未知的问题,比如端口冲突等等,这也会潜在的增加运维的开销和程序的不稳定性。
那么有没有一种办法能在不增加开销基础上解决这个问题呢?答案就是我们可以通过在WildFly中运行多个standalone模式的实例,然后在每个实例中都运行着我们的项目,再对不同的实例里项目的配置文件进行相应的修改(比如数据库连接字符串)。这样我们仅仅关注具体配置项的差异即可,不需要修改代码,也不需要关心是否有端口冲突问题,更不需要发行多个发布包。这个solution听起来是不是很诱人呢?
在进入正题之前我假设你已经对JBoss或者WildFly已经有了一定的了解,且已经可以正确运行你机器上WildFly和你的项目。本文中,我用来演示的WildFly的版本为9.0.2.Final。
如果你的WildFly和你的项目都是okay的话,那么你的项目应该是在standalone目录中。首先我们需要把项目的服务停掉,然后拷贝standalone到任意的一个文件夹,改个名字(比如standalone1)然后再拷回WildFly的根目录当中。
这个时候你的standalone1目录中也包含了一个和standalone一样的项目,接下来我们进入standalone1目录中修改一下你所需要修改的配置文件,比如数据库连接等等。修改完毕之后我们进入WildFly的bin目录,在里面建立两个bat文件start.bat和start1.bat。然后为start.bat添加如下命令
- ./standalone.bat -c standalone-full.xml -Djboss.server.base.dir=./../standalone -Djboss.socket.binding.port-offset=0
同理,start1.bat文件的内容修改为
- ./standalone.bat -c standalone-full.xml -Djboss.server.base.dir=./../standalone1 -Djboss.socket.binding.port-offset=100
这里我们稍微解释一下这个命令:
- ./standalone.bat这个是standalone模式的下的启动文件,不多说。
- -c standalone-full.xml是你自定义的WildFly的配置文件(这里我们用standalone-full.xml来举例子),也不多说。
- -Djboss.server.base.dir=./../standalone1是指定你这个WildFly的instance的根目录。
- -Djboss.socket.binding.port-offset=100指的是你这个实例针对于WildFly标准端口的偏移量。
编辑完成先后启动着两个bat文件。
start.bat
start1.bat
从控制台上我们可以看出,两个WildFly instances的Amdin Console分别是
http://127.0.0.1:9990 和 on http://127.0.0.1:10090
由此可见端口确实有了100的偏移量。。至此我们完成了WildFly多个实例的配置, 也就变向的实现我们文中最初的那种需求。
同理我们也为不同的instance添加shutdown的命令。
- ./jboss-cli.bat --controller=localhost:9990 --connect --command=:shutdown
- ./jboss-cli.bat --controller=localhost:10090 --connect --command=:shutdown
此刻你的心情是不是非常的轻松愉快呢?
转载于:https://www.cnblogs.com/bigben0123/p/5818607.html
在WildFly中运行多个standalone模式的实例相关推荐
- Flink学习1——运行时架构(standalone模式)
本篇主要讲述Flink Standalone模式下的运行时架构以及各个组件负责的功能,Flink的运行方式有很多,但都大同小异,本文基本可以满足对flink运行时架构的学习. 正文 Flink系统是主 ...
- Spark环境搭建Standalone模式
2.4 Standalone模式 在Standalon模式中,Spark集群由Master节点和Worker节点构成,使用内置的Standalon框架进行资源管理.Spark程序通过与Master节 ...
- 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
概述 前几篇博文都在介绍Spark的调度,这篇博文我们从更加宏观的调度看Spark,讲讲Spark的部署模式.Spark部署模式分以下几种: local 模式 local-cluster 模式 Sta ...
- wildfly_从WildFly 9(子系统)中运行OkHttpClient
wildfly 几天前, WildFly 9发布了,可以肯定的重点之一是Undertow Web子系统中对HTTP / 2.0的支持. 随着Hawkular最近开始使用WildFly 9(从8.2开始 ...
- 从WildFly 9(子系统)中运行OkHttpClient
几天前, WildFly 9发布了,可以肯定的重点之一是Undertow Web子系统中对HTTP / 2.0的支持. 由于Hawkular最近已开始使用WildFly 9(从8.2开始)作为其基础服 ...
- mysql standalone模式,Apache运行模式之standalone和inetd模式介绍
不仔细看httpd.conf配置文件还不知道有这回事,汗. ServerType这个配置选项指定如何运行Apache.Apache可以使用两种方法来运行:standalone(独立式)和inetd(超 ...
- Spark运行模式Standalone 模式
Standalone 模式 Standalone 模式概述 standalone n. 脱机; adj. 单独的,独立的; local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到 ...
- 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
我们讲到了如何启动Master和Worker,还讲到了如何回收资源.但是,我们没有将AppClient是如何启动的,其实它们的启动也涉及到了资源是如何调度的.这篇博文,我们就来讲一下AppClient ...
- python debug run 结果不同_Python:PyCharm中运行与调试模式下的不同行为
在没有附加调试器的情况下从PyCharm运行PyCharm时,Python代码的行为与使用pydev运行时的行为不同.在 我在PyCharm中运行一个POXSDN控制器和一个来自控制台的Mininet ...
最新文章
- 服务都启用的情况下XP远程桌面还是出现“此计算机无法连接到远程计算机”...
- mysql 统计_mysql数据统计级别技巧
- iOS自动偏移64个像素
- ORA-01506: missing or illegal database name
- 使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
- k8s 和 Docker 到底是什么关系?
- 苹果:失了 5G 会何妨?
- Ubuntu 8.04 Linux + Apache2 + MySQL5 + PHP + Tomcat5.5 整合安装
- (转)Managed DirectX +C# 开发(入门篇)(四)
- 【Zookeeper学习】Apache Zookeeper项目简介
- php fpm高并发,php-fpm 高并发、502解决方案
- 2020 年 Github 上最牛的 Java 进阶教程及 Java 实战项目都在这里了!
- html5 jq切换效果,jquery中实现标签切换效果的代码
- 挑战练习13.6 删除crime 记录
- 前端学习——Prop
- CYUSB3014 I2C eeprom 启动
- 网站架构设计实战项目一
- 面向服务与微服务架构
- maven打包失败解决方案
- cml sml区别_资本资产定价模型中cml与sml有什么区别?