在WildFly中运行多个standalone模式的实例
来源:互联网 发布:淘宝店面装修尺寸 编辑:程序博客网 时间:2024/06/11 15:19
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
此刻你的心情是不是非常的轻松愉快呢?
- 在WildFly中运行多个standalone模式的实例
- 在WildFly中运行多个standalone模式的实例
- wildfly服务器系列--wildfly运行standalone启动时报错
- wildfly standalone 模式配置成linux 服务
- wildfly standalone 模式配置成linux 服务
- 在spark开发环境中使用Standalone模式调试集群运行
- 深入理解 JBoss 7/WildFly Standalone 模式启动过程
- Spark运行在Standalone模式下产生的临时目录的问题
- 在非standalone环境中,asm实例启动时,asm 的spfile的搜索顺序
- 关于wildfly-10.1.0.Final(JBoss)点击standalone.bat出现'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件
- spark standalone模式单节点启动多个executor
- 多个依赖Netty3的应用在同一个Wildfly服务器上的布署冲突问题分析与解决
- Hypertable在Ubuntu12.04上standalone模式的安装
- 在同个 Mysql 5 上运行多个实例
- 在同个 Mysql 5 上运行多个实例
- 在一个WildFly实例中简单设置Drools KIE WorkBench和KIE服务器
- Standalone模式下Spark 中通信机制的源码分析
- postgres standalone backend 单用户模式运行
- Linxu系统下MySQL常见操作命令详细解读
- 通讯录:将数组中的model根据名字排序
- 中小学理科试验仿真软件
- Android 中 ListView的使用及优化
- 关于hibernate的查询,更新,需要先查询的问题
- 在WildFly中运行多个standalone模式的实例
- 基于WAMP的Crossbario 安装入门
- Doxygen&Graphviz构建源码组态档
- 指针学习笔记1
- ubuntu下cacti安装配置
- HDU 2111 Saving HDU
- 小鸡腿U T4 福州2011
- 自定义UICollectionViewLayout
- awk选择性输出