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>

最后,您可以执行服务器并享受新的酷功能。

参考: Java(B)Log博客上的JCG合作伙伴Jakub Kubrynski在JBoss 7中使用HA Singleton 。

翻译自: https://www.javacodegeeks.com/2013/09/using-ha-singleton-in-jboss-7.html

jboss1.7

jboss1.7_在JBoss 7中使用HA Singleton相关推荐

  1. 在JBoss 7中使用HA Singleton

    不久前,我不得不更改Quartz Scheduler的标准集群行为,并使其能够在不同步数据库的情况下工作. 当然,有很多选择可以做到这一点,但是由于我是简单性的忠实拥护者,因此我决定使用标准的Spri ...

  2. jboss1.7_在JBoss Fuse / Fabric8 / Karaf中使用Byteman

    jboss1.7 您是否曾经尝试了解一些简单的东西不起作用的过程? 您正在任何众所周知的上下文中编写代码,并且无论出于何种原因它都无法正常工作. 而且您信任您的平台,因此您认真阅读了所有日志.而且您仍 ...

  3. jboss eap 7_使用JBoss EAP 7的HTTP / 2

    jboss eap 7 就在几天前,新的JBoss EAP 7 ALPHA版本已经发布. 而且我已经写过博客,介绍如何开始使用它 . 一个非常有趣的部分是HTTP / 2支持,它已作为技术预览添加. ...

  4. jboss1.7_快速指南:剖析JBoss BPM跨进程通信

    jboss1.7 (文章来宾与北美红帽公司高级解决方案架构师杰伊·保拉杰共同撰写) 几周的提示与技巧文章将深入探讨JBoss BPM Suite,特别是有关如何在两个流程之间进行通信的问题. 在进入解 ...

  5. java例7_在Java 7中处理周数

    import java.text.DateFormat; import java.util.Calendar; import java.util.SimpleTimeZone; /** from * ...

  6. python3中的单例模式Singleton

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-01-21 09:09:09 # @Author : cdl (1217096 ...

  7. spring 中scope的singleton和prototype区别

    <bean id="meetAction" class="com.web.actions.MeetsAction"   scope="proto ...

  8. Eclipse juno 中安装 JBoss Tools,集成Hibernate

    在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件.注释代码以及反向工程. Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss T ...

  9. JBoss AS 8中的Java EE 7和EJB 3.2支持

    你们中有些人可能已经知道Java EE 7规范的Public Final Draft版本已经发布 . 除此以外,此版本的Java EE还引入了EJB规范的EJB 3.2版本. 与EJB 3.1规范相比 ...

最新文章

  1. [正能量系列]赋闲的程序员(三)
  2. JavaScript 技术篇-简单的两行js代码获取password不可见密码实例演示,js获取密码输入框里的值
  3. 使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务
  4. Linux下查看CPU等基本命令,Linux查看CPU和内存使用情况的常用命令
  5. 大剑无锋之Java的深浅拷贝解释一下!
  6. 大屏做成这样,领导不重用你都难
  7. Android数据库框架总结
  8. 分布式保存Session 和 StateServer 解决 Session过期
  9. Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
  10. maven配置阿里源
  11. 开源:安卓手机app控制arduino,通过esp8266-01
  12. Excel 2010 VBA 入门 033 批量合并相同的单元格
  13. ps导出gif时是html,ps导出gif图步骤图解
  14. Python 鸭子类型的理解
  15. nose-report
  16. 在线文档分享平台技术实现探讨
  17. linux下keytool生成证书_使用keytool 生成证书
  18. Python 水果出库
  19. 用Rational Rose来建立数据库表
  20. Moore and Mealy

热门文章

  1. 人工智能数学基础----导数
  2. 1055. 集体照 (25)
  3. CCNP-16 OSPF试验12(BSCI)
  4. 利用隐藏神经元解决异或问题的小型示例程序
  5. 一流人才在军界和商界,二流人才在政界,三流人才在学术界;男孩子,可以什么都不会,但是必须会挣钱...
  6. :link,:visited,:focus,:hover,:active详解
  7. [转]独立窗口打开多个Excel文件
  8. 关于如何发现忠诚的下属的讨论
  9. sqlmap namespace ibatis 没有生效
  10. linux cat 合并文本 中间添加分隔符