|
@hardy.ferentschik np
Yes, the same server running the application and HornetQ. In this case, you have no control over the start order as EAP has an asynchronous deployment process.
I am attaching a full server.log with trace on org.hornetq and org.hibernate.
Really the key piece is the queue is not bound until the HornetQ server is live. This isn't an issue for MDBs or other client resources because they retry.
11:19:04,948 INFO [org.hornetq.core.server] (ServerService Thread Pool – 70) HQ221007: Server is now live 11:19:04,948 INFO [org.hornetq.core.server] (ServerService Thread Pool – 70) HQ221001: HornetQ Server version 2.3.25.Final (2.3.x, 123) [c2176f65-fb3d-11e4-aac5-351352cf256d] 11:19:04,949 INFO [org.hornetq.core.server] (ServerService Thread Pool – 70) HQ221003: trying to deploy queue jms.queue.IndexingQueue 11:19:04,957 INFO [org.jboss.as.messaging] (ServerService Thread Pool – 70) JBAS011601: Bound messaging object to jndi name java:/queue/indexupdates
And it attempts to create the persistence unit much earlier:
11:18:56,511 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool – 71) MSC000001: Failed to start service jboss.persistenceunit."search-slave-1.0-SNAPSHOT.war#search-pu": org.jboss.msc.service.StartException in service jboss.persistenceunit."search-slave-1.0-SNAPSHOT.war#search-pu": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager com.mrobson.example.search.datamodel.Person at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_71] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.2.Final-redhat-1.jar:2.1.2.Final-redhat-1] Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager com.mrobson.example.search.datamodel.Person at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:265) at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:528) at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:495) at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:104) at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:364) at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:219) at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:143) at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:74) at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:52) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:575) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1799) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) ... 4 more Caused by: org.hibernate.search.SearchException: HSEARCH000164: Unable to lookup Search queue '/queue/indexupdates' and connection factory 'java:/RemoteConnectionFactory' for index 'com.mrobson.example.search.datamodel.Person' at org.hibernate.search.backend.impl.jms.JndiJMSBackendQueueProcessor.initializeJMSQueue(JndiJMSBackendQueueProcessor.java:67) at org.hibernate.search.backend.impl.jms.JmsBackendQueueProcessor.initialize(JmsBackendQueueProcessor.java:78) at org.hibernate.search.backend.BackendFactory.createBackend(BackendFactory.java:85) at org.hibernate.search.backend.BackendFactory.createBackend(BackendFactory.java:53) at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.createBackend(DirectoryBasedIndexManager.java:204) at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:102) at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:261) ... 21 more Caused by: javax.naming.NameNotFoundException: queue/indexupdates – service jboss.naming.context.java.queue.indexupdates at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104) [jboss-as-naming-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:197) [jboss-as-naming-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:243) [jboss-as-naming-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:183) [jboss-as-naming-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179) [jboss-as-naming-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at javax.naming.InitialContext.lookup(InitialContext.java:411) [rt.jar:1.7.0_71] at javax.naming.InitialContext.lookup(InitialContext.java:411) [rt.jar:1.7.0_71] at org.hibernate.search.backend.impl.jms.JndiJMSBackendQueueProcessor.initializeJMSQueue(JndiJMSBackendQueueProcessor.java:64) ... 27 more
In this case,
https://github.com/hibernate/hibernate-search/blob/4.4/engine/src/main/java/org/hibernate/search/backend/impl/jms/JmsBackendQueueProcessor.java
initialize() does: this.jmsQueue = initializeJMSQueue( factory, props );
which does a JNDI lookup on the queue, that fails, causing the full and unrecoverable failure
https://github.com/hibernate/hibernate-search/blob/4.4/engine/src/main/java/org/hibernate/search/backend/impl/jms/JndiJMSBackendQueueProcessor.java
return (Queue) initialContext.lookup( getJmsQueueName() );
|