jboss1.7_在JBoss 7中使用HA Singleton
![](/assets/blank.gif)
jboss1.7
前一段时间,我不得不更改Quartz Scheduler的标准集群行为,并使其能够在不同步数据库的情况下工作。 当然,有很多选择可以做到这一点,但是由于我是简单性的忠实拥护者,我决定使用标准的Spring @Scheduled配置,并且完全跳过了这一级的集群问题。 这个想法只是在计划方法的开头调用“检查我是否在主节点上”方法。 唯一的问题是如何编写这种方法。 选择是使用JBoss HA Singleton功能。 它在JBoss 7.x中可用,但是缺乏文档迫使进行了一些实验……太好了!
我们需要做的第一件事是提供适当的依赖关系,其中包含一些重要的类。 当然,请记住正确的版本(这里我使用的是7.1.1.Final,因为它在公共存储库中可用,并且所有下一个版本的7都需要手动构建)。
<dependency><groupid>org.jboss.as</groupid><artifactid>jboss-as-clustering-singleton</artifactid><version>7.1.1.Final</version><scope>provided</scope>
</dependency>
现在是时候进行一些编码了! 让我们从包含将要安装到应用程序服务器中的服务的类开始。 它的作用是设置主机状态标志,并通过简单的静态方法将其公开。
包com.stackholder.jboss.ha;
import org.jboss.msc.service.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
import java.util.concurrent.atomic.AtomicBoolean;public class MasterStatusHaSingleton extends AbstractService<Serializable> {private static final Logger LOGGER = LoggerFactory.getLogger(MasterStatusHaSingleton.class);private static AtomicBoolean masterStatus = new AtomicBoolean(false);@Overridepublic void start(StartContext startContext) {LOGGER.info("MasterStatusHaSingleton started");masterStatus.set(true);}@Overridepublic void stop(StopContext stopContext) {LOGGER.info("MasterStatusHaSingleton stopped");masterStatus.set(false);}public static boolean isMaster() {return masterStatus.get();}
}
现在我们需要编写将准备好的服务安装到容器中的类。
package com.stackholder.jboss.ha;import org.jboss.as.clustering.singleton.SingletonService;
import org.jboss.msc.service.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class HaSingletonActivator implements ServiceActivator {private final static Logger LOGGER =LoggerFactory.getLogger(HaSingletonActivator.class);public static final ServiceName SINGLETON_SERVICE_NAME =ServiceName.JBOSS.append("ha", "singleton");@Overridepublic void activate(ServiceActivatorContext context) throws ServiceRegistryException {LOGGER.info("HaSingletonActivator will be installed");MasterStatusHaSingleton srv = new MasterStatusHaSingleton();SingletonService singleton = new SingletonService(srv, SINGLETON_SERVICE_NAME);singleton.build(new DelegatingServiceContainer(context.getServiceTarget(),context.getServiceRegistry())).setInitialMode(ServiceController.Mode.ACTIVE).install();LOGGER.info("HaSingletonActivator installation SUCCESSFUL");}
}
请记住,JBoss 7使用的是OSGi,因此我们必须告诉应用程序服务器我们将在应用程序中使用哪些模块。 最简单的方法是将配置添加到war或jar插件中:
<configuration><archive><manifestentries><dependencies>org.jboss.msc,org.jboss.as.server,org.jboss.as.clustering.singleton</dependencies></manifestentries></archive>
</configuration>
太好了-差不多完工了! 几乎。 我们要做的最后一件事是在JBoss配置中激活适当的模块。 只需编辑standalone-full-ha.xml文件(或您当然使用的其他配置),然后将以下模块添加到ee子系统中:
<subsystem xmlns="urn:jboss:domain:ee:1.0"><global-modules><module name="org.jboss.msc" slot="main"><module name="org.jboss.as.clustering.singleton" slot="main"></global-modules>
</subsystem>
最后,您可以执行服务器并享受新的酷功能。
翻译自: https://www.javacodegeeks.com/2013/09/using-ha-singleton-in-jboss-7.html
jboss1.7
jboss1.7_在JBoss 7中使用HA Singleton相关推荐
- 在JBoss 7中使用HA Singleton
不久前,我不得不更改Quartz Scheduler的标准集群行为,并使其能够在不同步数据库的情况下工作. 当然,有很多选择可以做到这一点,但是由于我是简单性的忠实拥护者,因此我决定使用标准的Spri ...
- jboss1.7_在JBoss Fuse / Fabric8 / Karaf中使用Byteman
jboss1.7 您是否曾经尝试了解一些简单的东西不起作用的过程? 您正在任何众所周知的上下文中编写代码,并且无论出于何种原因它都无法正常工作. 而且您信任您的平台,因此您认真阅读了所有日志.而且您仍 ...
- jboss eap 7_使用JBoss EAP 7的HTTP / 2
jboss eap 7 就在几天前,新的JBoss EAP 7 ALPHA版本已经发布. 而且我已经写过博客,介绍如何开始使用它 . 一个非常有趣的部分是HTTP / 2支持,它已作为技术预览添加. ...
- jboss1.7_快速指南:剖析JBoss BPM跨进程通信
jboss1.7 (文章来宾与北美红帽公司高级解决方案架构师杰伊·保拉杰共同撰写) 几周的提示与技巧文章将深入探讨JBoss BPM Suite,特别是有关如何在两个流程之间进行通信的问题. 在进入解 ...
- java例7_在Java 7中处理周数
import java.text.DateFormat; import java.util.Calendar; import java.util.SimpleTimeZone; /** from * ...
- python3中的单例模式Singleton
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-01-21 09:09:09 # @Author : cdl (1217096 ...
- spring 中scope的singleton和prototype区别
<bean id="meetAction" class="com.web.actions.MeetsAction" scope="proto ...
- Eclipse juno 中安装 JBoss Tools,集成Hibernate
在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件.注释代码以及反向工程. Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss T ...
- JBoss AS 8中的Java EE 7和EJB 3.2支持
你们中有些人可能已经知道Java EE 7规范的Public Final Draft版本已经发布 . 除此以外,此版本的Java EE还引入了EJB规范的EJB 3.2版本. 与EJB 3.1规范相比 ...
最新文章
- NDK JNI Android Studio开发与调试DEMO(三)(生成 .so 文件)
- 测试MindMotion MM32F3277 MicroPython -2021-11-20新增PWM版本
- springboot 主键重复导致数据重复_程序员:MySQL处理插入过程中主键或唯一键重复值的解决办法
- System.IO.Directory.Delete 方法的使用
- 支持对抗样本防御的AI加速器架构设计
- QCC Practice
- 41款非常有创意的卡通图标大全可爱
- 互联网思维——用户思维
- 通过ajax单独上传图片
- 解读Vue项目文件目录结构,实例化Vue对象,数据和方法
- 人工智能——课程论文
- 如何安装部署beego项目
- 解决Word、Excel启动时提示向程序发送命令出现问题
- 黑盒测试-判定表驱动法与错误推测法-三角形问题
- 用 Delphi 学设计模式(一) 之 简单工厂篇
- 《PS/AI教程》我是如何实现让学员在两个月内高效掌握AI/PS的?
- 干货!元宇宙,是技术颠覆?还是产业革命?
- 练习 电源 基于STM32F103C8T6的单片机降压电路
- HTML5之七夕情人节送花动画特效
- 【建议收藏】精选多家互联网公司PHP面试题