Een MBean registreren met de MBean-server van JBoss - Kan de JBoss MBean-server niet vinden

Ik gebruik Spring om een ​​MBean bloot te stellen en te registreren bij de JBoss MBean-server. Dit werkt prima als de oorlog wordt overgelaten aan een exemplaar van JBoss. Het werkt echter niet als unit tests worden uitgevoerd (wat logisch is omdat er geen instantie van JBoss actief is) Hier is het uittreksel uit de veerconfiguratie





    







Waar ik naar op zoek ben, is een elegante manier om met dit probleem om te gaan (ik wil geen twee veerconfiguraties hebben (voor testen en voor implementatie) en het uitschakelen van de veerconfiguratiebevestigingstest is geen optie.

Bedankt!

0

2 antwoord

Ik gebruik @Bean om dat probleem op te lossen. @Bean is op maat gemaakt voor het maken van omgevingsspecifieke bonencreatie.

De onderstaande logica is in feite, in ontwikkeling (Tomcat) en test (JUnit), MBeanServerFactoryBean gebruiken. Gebruik anders de JBoss MBean Server.

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

In het voorjaar van 3.1 kun je dit probleem oplossen en nog steeds XML-configuratie gebruiken door profielen te gebruiken. Maar het bovenstaande werkt met Spring 3.0.

0
toegevoegd
Bedankt! We gebruiken Spring 3.1, dus ik heb het probleem met profielen opgelost.
toegevoegd de auteur Quantum_Entanglement, de bron

Dit is een van die situaties waarin je waarschijnlijk twee configs moet hebben, een voor testen en een voor implementatie.

Dit is waar Maven goed is, omdat je een duidelijke scheiding hebt tussen je implementatieconfigs en je testconfiguren. Als je je zorgen maakt over het aanhouden van twee configs, moet je je configs zodanig structureren dat alle gewone bits in de andere configs worden geïmporteerd (zo hebben we het gedaan).

0
toegevoegd