jakarta-ee - 迁移/创建 HA-Singleton 到 jboss 7

标签 jakarta-ee jboss singleton migration jboss7.x

我一直在 jboss 中使用 deploy-hasingleton 文件夹作为 6,这允许我创建一个单例 bean,用于控制来自集群节点的业务信息请求。这些方法是同步的,是为了控制节点之间的并发性(相同的数据不能在不同的节点)。

现在我要迁移到 Jboss 7,并且由于 deploy-hasingleton 文件夹消失了,我一直在关注官方示例:

  • Cluster Link
  • Cluster Link 2

  • 问题是这些例子太琐碎了,不明白哪里可以放业务逻辑方法。
    所以我尝试将该逻辑放在 SingletonService 中,它实现了:Service、MyInterface

    我已将 getValue 方法修改为以下内容:
    @Override
        public MyInterface getValue() throws IllegalStateException,
                IllegalArgumentException {
    
            return this;
        }
    

    在客户端:
    @Override
        public List<Long> myMeth(Long arg1, int arg2) {
            LOGGER.log("loadGroups() is called()");
            ServiceController<?> service = CurrentServiceContainer.getServiceContainer().getService(
                    GroupDistributorService.SINGLETON_SERVICE_NAME);
    
            if (service != null) {
                return ((MyInterface ) service.getValue()).getMyMethod(arg1, arg2);
            } else {
                throw new IllegalStateException("Service '" + GroupDistributorService.SINGLETON_SERVICE_NAME + "' not found!");
            }
        }
    

    我怀疑这是正确的方法。其次,这似乎适用于包含主单例服务的节点。但是在其他节点中,它在调用单例服务时会锁定,并且出现超时。

    最佳答案

    几个月前,我发布了关于在 Jboss 7 中使用 HASingleton 的博客文章:
    http://www.kubrynski.com/2013/07/using-ha-singleton-in-jboss-7.html
    希望它会有所帮助。确保您启用了集群模式:

    <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>
    

    并且你坚持使用 osgi 系统,通过在你的 pom.xml(到 jar/war 插件)中添加这样的配置:
    <configuration>
      <archive>
        <manifestentries>
          <dependencies>
            org.jboss.msc,org.jboss.as.server,
            org.jboss.as.clustering.singleton
          </dependencies>
        </manifestentries>
      </archive>
    </configuration>
    

    关于jakarta-ee - 迁移/创建 HA-Singleton 到 jboss 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19539857/

    相关文章:

    java - 尝试在 Activity 目录中执行 LDAP 查找时出错

    java - 几个 java 'activation' 库定义了重叠的类。使用哪一种?

    linux - 由于字体的原因,Windows 和 Linux 上的网页布局有所不同

    c++ - 用于单例销毁的 atexit : failure case

    ios - 创建单例并覆盖 alloc 类方法

    java - “J2EE”或“Java EE”如何发音

    java - 如何保证 session 属性的线程安全

    java - 网络应用程序自动安装

    java - 没有可用的 EjbContext

    c++ - 单例模式析构函数 C++