Hi Oscar, the code you posted is correct ... it uses @PostConstruct . However, but the stack trace shows that there must still be some other services that are written the old, non-supported, way.
java.lang.IllegalStateException: Event bus has already been created; too late to register any further (singleton) subscribers at org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault.register(EventBusServiceDefault.java:68) at com.xms.framework.risk.domain.model.RiskCategories.setEventBusService(RiskCategories.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) Take a look RiskCategories service... write it the same way as ExternalSystemsMonitoringInformationEventHandler, above. Cheers Dan 2015-01-08 17:37 GMT+01:00 GESCONSULTOR - Óscar Bou <[email protected]> : > > Hi all, > > I’m launching tests with have Services with Event Handlers this way: > > public class MonitoringSystemInitializer { > … > private static class MonitoringIntegTestBuilder extends > IsisSystemForTest.Builder { > > private MonitoringIntegTestBuilder() { > … > this.withServices(new ExternalSystemsMonitoringInformationEventHandler() > ... > > > > ... > } > … > } > > > > public class ExternalSystemsMonitoringInformationEventHandler extends > AbstractXMSService { > > … > > // {{ injected: EventBusService > @Programmatic > @PostConstruct > public void postConstruct() { > this.eventBusService.register(this); > } > > @Programmatic > @PreDestroy > public void preDestroy() { > this.eventBusService.unregister(this); > } > > @javax.inject.Inject > private EventBusService eventBusService; > // }} > > > } > > > > > When launching the tests the following exception is thrown: > > > > java.lang.IllegalStateException: Event bus has already been created; too > late to register any further (singleton) subscribers > at > org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault.register(EventBusServiceDefault.java:68) > at > com.xms.framework.risk.domain.model.RiskCategories.setEventBusService(RiskCategories.java:68) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.invokeMethod(ServicesInjectorDefault.java:254) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.invokeInjectorMethod(ServicesInjectorDefault.java:286) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.autowire(ServicesInjectorDefault.java:239) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.autowireViaPrefixedMethods(ServicesInjectorDefault.java:229) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.injectServices(ServicesInjectorDefault.java:182) > at > org.apache.isis.core.metamodel.services.ServicesInjectorDefault.injectServicesInto(ServicesInjectorDefault.java:148) > at > org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.mapAndInjectServices(AdapterManagerDefault.java:750) > at > org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.adapterFor(AdapterManagerDefault.java:184) > at > org.apache.isis.core.runtime.system.persistence.PersistenceSession.createServiceAdapters(PersistenceSession.java:208) > at > org.apache.isis.core.runtime.system.persistence.PersistenceSession.initServices(PersistenceSession.java:194) > at > org.apache.isis.core.runtime.system.persistence.PersistenceSession.open(PersistenceSession.java:184) > at > org.apache.isis.core.runtime.system.session.IsisSessionDefault.open(IsisSessionDefault.java:97) > at > org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:71) > at > org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:271) > at > org.apache.isis.core.integtestsupport.IsisSystemForTest.openSession(IsisSystemForTest.java:405) > at > org.apache.isis.core.integtestsupport.IsisSystemForTest.openSession(IsisSystemForTest.java:400) > at > org.apache.isis.core.integtestsupport.IsisSystemForTest.bounceSystem(IsisSystemForTest.java:395) > at > org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate(IntegrationTestAbstract.java:202) > at > org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate(JUnitRuleMockery2.java:146) > at > org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:168) > at org.junit.rules.RunRules.evaluate(RunRules.java:20) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > at org.junit.runners.ParentRunner.run(ParentRunner.java:309) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) > > > > > > *Óscar Bou Bou* > Responsable de Producto > Auditor Jefe de Certificación ISO 27001 en BSI > CISA, CRISC, APMG ISO 20000, ITIL-F > > 902 900 231 / 620 267 520 > http://www.twitter.com/oscarbou > > http://es.linkedin.com/in/oscarbou > > http://www.GesConsultor.com <http://www.gesconsultor.com/> > > > > Este mensaje y los ficheros anexos son confidenciales. Los mismos > contienen información reservada que no puede ser difundida. Si usted ha > recibido este correo por error, tenga la amabilidad de eliminarlo de su > sistema y avisar al remitente mediante reenvío a su dirección electrónica; > no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. > Su dirección de correo electrónico junto a sus datos personales constan en > un fichero titularidad de Gesdatos Software, S.L. cuya finalidad es la de > mantener el contacto con Ud. Si quiere saber de qué información disponemos > de Ud., modificarla, y en su caso, cancelarla, puede hacerlo enviando un > escrito al efecto, acompañado de una fotocopia de su D.N.I. a la siguiente > dirección: Gesdatos Software, S.L. , Paseo de la Castellana, 153 bajo - > 28046 (Madrid), y Avda. Cortes Valencianas num. 50, 1ºC - 46015 (Valencia). > Asimismo, es su responsabilidad comprobar que este mensaje o sus archivos > adjuntos no contengan virus informáticos, y en caso que los tuvieran > eliminarlos. > > > > > >
