日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在JBoss 7中使用HA Singleton

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在JBoss 7中使用HA Singleton 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不久前,我不得不更改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

總結

以上是生活随笔為你收集整理的在JBoss 7中使用HA Singleton的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。