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
此刻你的心情是不是非常的轻松愉快呢?
相关推荐
startup_nacos_by_standalone.bat,windows下nacos的standalone模式启动
1.进行相应的解压操作之后,对flink-conf.yaml、slaves文件进行配置 vi flink-conf.yaml 2. vi slaves来设置子节点 3.将主节点配置的文件复制到其他节点上scp -r /flink-1.9.2/ root@192.168.198.131:/yanxiaobo/...
1. 解压Spark安装包 2. 配置Spark环境变量 2. 修改 spark-env.sh 文件,完成以下设置: 1. 设置运行master进程的节点, e
springboot整合spark连接远程服务计算框架使用standAlone模式
独立部署模式standalone下spark配置,从乌班图到jak,scala,hadoop,spark的安装 部署
主要介绍了Apache运行模式之standalone和inetd模式介绍,本文讲解了ServerType这个配置参数,ServerType这个配置选项指定如何运行Apache,需要的朋友可以参考下
该模式下,所有JBoss server可以划分成不同的group(注:这里的JBoss server并不一定要对应某台物理机或虚拟机,一个os上,可以同时run多个JBoss server实例,所以本文中的JBoss server均指某个运行中的JBoss server ...
Spark是基于内存计算的大数据并行计算框架,实际中运行计算任务肯定是使用集群模式,那么我们先来学习Spark自带的standalone集群模式了解一下它的架构及运行机制。 Standalone集群使用了分布式计算中的master-...
Spark Standalone模式集成HDFS配置清单,教你如何配置spark和hdfs平台。由于Linux的防火墙限制,初学者嫌麻烦可以关闭防火墙。
nacos-server-2.0.0 修改成了单例模式,可以自行修改成集群模式
一个Webpack插件,用于在独立模式下运行单spa微前端。 这是使用。 :warning: 关于独立模式的警告 单机模式不等同于以集成模式进行开发,因为单spa根配置在每个模式中都不完全相同。 由于独立模式下的root配置与...
主要介绍了spark之Standalone模式部署配置详解,小编觉得挺不错的,这里分享给大家,供各位参考。
docker run -p 8080:8080 -p 9990:9990 -it jboss/wildfly /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0 以域模式启动 docker run -it jboss/wildfly /opt/jboss/wildfly/bin/domain.sh -...
spark的Standalone模式安装 一、安装流程 1、将spark-2.2.0-bin-hadoop2.7.tgz 上传到 /usr/local/spark/ 下,然后解压 2、进入到conf中修改名字 改为 .sh 结尾的 3、编辑 spark-env.sh 4、修改slaves 的...
使用flink的standalone模式同步Kafka的数据到clickhouse的flink代码和jar包
WildFly应用服务器 快速启动 占地面积小 模块化设计 统一配置和管理 当然还有Java EE! 建造 确保已安装JDK 8(或更高版本) Java版本 在类似* nix的系统上,使用准备好的脚本 ./build.sh 在Windows上,使用相应...
将项目作为“现有Maven项目”导入Eclipse 将Wildfly 18服务器添加到Eclipse并使用它在服务器上运行项目或者在wildfly / bin中使用./standalone.sh启动Wildfly 18进程使用mvn clean org.wildfly.plugins:wildfly-...
jackrabbit-standalone-1.6.5.jar是webDav的支持jar包。
VMware vCenter Converter Standalone Installer for Windows
该映像旨在使在Wildfly应用程序服务器上启动,配置,部署和运行JEE应用程序尽可能简单。 它显示了如何在环境变量上启用运行时配置,以使其真正易于部署大量此映像。 用法 首先克隆此存储库。 git clone ...