MBeanをJBoss MBeanサーバーに登録する - JBoss MBeanサーバーを見つけることができません

Springを使用してMBeanを公開し、JBoss MBeanサーバーに登録しています。これは、戦争がJBossのインスタンスにドロップされたときにうまく動作します。しかし、単体テストを実行すると動作しません(これはJBossの実行インスタンスがないため意味をなさない) ここでは、スプリング構成からの抽出があります





    







私が探しているのは、この問題に対処するためのエレガントな方法です(2つのバネ構成(テスト用と展開用)を必要とせず、スプリング構成検証テストを無効にすることはオプションではありません。

ありがとう!

0

2 答え

私はその問題を解決するために@Beanを使用しています。 @Beanは、環境固有のBean作成を行うためのものです。

以下のロジックは基本的に開発中(Tomcat)とテスト(JUnit)ではMBeanServerFactoryBeanを使用しています。それ以外の場合は、JBoss MBeanサーバーを使用します。

  @Bean
  def mbeanServer: MBeanServer = {
    val server = if (environment == "development" || environment == "test") {
      val factory = new MBeanServerFactoryBean
      factory.setLocateExistingServerIfPossible(true)
      factory.setRegisterWithFactory(true)
      factory.afterPropertiesSet()
      log.info("using default MBeanServer")
      factory.getObject
    } else {
      val clazz = Class.forName("org.jboss.mx.util.MBeanServerLocator")
      val locateJboss = clazz.getMethod("locateJBoss", List.empty[Class[_]].toArray: _*)
      log.info("using JBoss MBeanServer")
      locateJboss.invoke(null, 
           List.empty[java.lang.Object].toArray: _*).asInstanceOf[MBeanServer]
    }
    log.info("mbeanServer: " + server)
    server
  }

Spring 3.1では、この問題を解決し、プロファイルを使用してXML設定を使用することができます。しかし、上記はSpring 3.0で動作します。

0
追加された
ありがとう!私たちはSpring 3.1を使用しているので、プロファイルで問題を解決しました。
追加された 著者 Quantum_Entanglement,

これはおそらく、テスト用とデプロイ用の2つのconfigを持つ必要がある状況の1つです。

これは、Mavenが優れている場所です。デプロイメントのコンフィグレーションとテストコンフィグレーションを明確に区別しているからです。 2つのコンフィグを最新の状態に保つことが心配な場合は、すべての共通ビットが他のコンフィグにインポートされるようにコンフィグを構造化する必要があります。

0
追加された