Ups!!! My fault. As you noticed, there were other services registered “the old way” to the EventBusService ...
> El 8/1/2015, a las 18:21, Martin Grigorov <[email protected]> escribió: > > Hi Oscar, > > 2015-01-08 17:37 GMT+01:00 GESCONSULTOR - Óscar Bou <[email protected] > <mailto:[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) > > > The stacktrace says the service is RiskCategories, not > ExternalSystemsMonitoringInformationEventHandler. > Is the logic the same there ? > > Looking at the code I see it is possible to re-register only RequestScoped > services, but not singletons. > I remember Dan explaining the change in dev@ few months ago. > > 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 > > <contactenos.html.gif> 902 900 231 / 620 267 520 > <Pasted Graphic 1.tiff> http://www.twitter.com/oscarbou > <http://www.twitter.com/oscarbou> > > <gesdatos-software.gif> http://es.linkedin.com/in/oscarbou > <http://es.linkedin.com/in/oscarbou> > > <blog.png> http://www.GesConsultor.com <http://www.gesconsultor.com/> > > <gesconsultor_logo_blue_email.png> > > > 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. Ó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://www.twitter.com/oscarbou> http://es.linkedin.com/in/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.
