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实例以实现高可用性和负载均衡。本教程将深入讲解如何在Linux环境(CentOS)下配置Wildfly9的多实例,以及使用JDK8和shell脚本来管理这些实例。 首先,确保你已经...
4. **配置JMS资源**:在WildFly中,你需要在`standalone.xml`或`domain.xml`配置文件中定义JMS连接工厂、队列和主题。这通常包括设置JNDI名称、指定连接参数等。 5. **编写JMS应用**:应用通过JMS API创建...
支持集群部署,可以创建多个服务器实例来实现负载均衡和故障转移,确保高可用性和容错性。 6. **安全性**: 内置的安全机制包括角色基的访问控制(RBAC)、HTTPS支持、以及集成的身份验证和授权服务,如JAAS...
- MDBs运行在Java EE应用服务器中,例如WildFly、TomEE或GlassFish,它们负责管理bean的生命周期和资源。 2. **MDB的工作流程** - 消息生产者将消息发布到一个指定的JMS队列或主题。 - 应用服务器中的MDB实例...
为了提高Keycloak的可用性和性能,您可以部署多个实例并配置负载均衡器。Keycloak支持数据复制和集群模式,确保服务的高可用性。 通过以上步骤,您应该能够成功安装并配置Keycloak服务,使其成为您的系统中的可靠...
JBPM是一个用于业务流程管理的开源框架,它存储流程定义、任务信息和运行时数据在数据库中。因此,数据库的选择对性能和可扩展性有直接影响。 **更改数据库步骤概述:** 1. **数据库准备**:安装并配置MySQL或...
总结,drools工作台7.8的部署涉及到多个步骤,包括环境配置、war文件或源码部署、服务器配置以及后期的使用和管理。通过理解其核心组件和工作流程,我们可以更好地利用这个强大的业务规则管理平台,进行高效、灵活的...
`standalone-ha.xml`是WildFly服务器的一种配置模式,它支持高可用性和集群功能,允许多个服务器实例协同工作,共同处理请求,提高服务的稳定性和性能。 在集群环境中,WildFly实例可以共享负载,如果一个实例出现...
2. **domain.xml**:当JBoss在域模式下运行时,这个文件负责管理多个服务器实例的配置。 3. **host.xml**:在域模式下,每个主机控制器都有一个host.xml文件,用于配置主机特定的设置。 4. **configuration....
该模式下可以通过一个中心化的管理节点(即域控制器)来统一管理多个运行节点,简化了维护和管理的工作量。 本文将详细介绍如何在 Linux 系统下搭建 JBoss EAP 集群,包括域模式下的配置及 mod_cluster 的集成,以...
- **集群配置**:通过配置多个JBoss实例,实现高可用性和负载均衡。 - **模块化**:JBoss的模块系统允许你精细控制依赖关系,提升性能和可维护性。 - **热部署**:启用热部署功能,使得在不中断服务的情况下更新应用...
独立模式适用于小型部署,而域模式适合大型集群和多实例管理。 ### 五、配置JBoss服务 1. **创建系统服务**:为了使JBoss作为后台服务运行,可以创建一个系统服务。例如,在Systemd环境中,创建`/etc/systemd/...
在部署过程中遇到了多个问题,主要包括: 1. **JBossAware不支持JBoss7.1.1** - EOS应用中的`JBossAware`类用于获取服务器相关信息,原版本仅支持至JBoss 6,因此需要修改代码以适应JBoss 7.x的配置文件和目录结构...
其集群配置允许将多个服务器实例组织成一个逻辑单元,从而实现负载均衡、故障转移和资源共享。配置WebLogic集群主要涉及以下几个步骤: 1. **创建集群**:在WebLogic管理控制台中,管理员需要创建一个新的集群,并...
通过命令行工具启动和停止JBoss服务,如使用`standalone.sh`或`domain.sh`脚本来控制单体模式和域模式的服务器实例。 三、应用部署 3.1 WAR与EAR文件 开发者通常将Java Web应用打包成WAR(Web ARchive)文件,而...
4. **配置JBoss服务器**: 需要在每个JBoss实例的配置文件(如server.xml或standalone.xml)中启用远程管理,并为mod_jk配置适当的端口和协议。 5. **启动和测试**: 启动所有Apache和JBoss实例,验证负载均衡是否...
分析`@Form`注解,用于封装多个表单参数,简化表单数据的处理流程。 ### 十三、@DefaultValue 说明`@DefaultValue`注解,用于指定参数的默认值,减少代码冗余。 ### 十四、@Encoded和编码 阐述`@Encoded`注解和...
- 集群配置:通过配置多个JBoss实例并共享同一持久化存储,实现高可用性和故障转移。 - 负载均衡:结合Apache HTTPD或Nginx反向代理,根据负载策略将请求分发到各个服务器节点。 6. **日志管理** - 日志配置:...
在这个场景中,我们需要关注的是如何在Apache Tomcat上部署Drools 7.4.1 Workbench。 首先,理解Drools Workbench的核心概念: 1. **Drools Engine**: Drools Engine是整个框架的基础,它实现了基于规则的推理系统...