2015-06-02 4 views
2

Ранее 2 сервера JBoss 6 (ведущий & подчиненный) были запущены с двумя разными IP-адресами (127.0.0.1 и 127.0.0.2), а те 2 экземпляра сервера были запущены в режиме домена , Экземпляры использовали HornetQ для обмена заданиями индекса для Hibernate Search. Я пытаюсь создать подобную конфигурацию, используя Wildfly вместо JBoss.HornetQ, использующий JNDI/удаленный доступ при использовании с кластером WildFly 8.1

Мастер экземпляр запускается со следующей конфигурацией (фрагменты размещены только), используя порт смещения = "220":

domain.xml-Master:

<server-group name="other-server-group" profile="full-ha"> 
    <jvm name="default"> 
     <heap size="256m" max-size="1303m"/> 
     <permgen max-size="256m"/> 
    </jvm> 
    <socket-binding-group ref="full-ha-sockets"/> 
    <deployments> 
     <deployment name="mc-ds.xml" runtime-name="mc-ds.xml"/> 
     <deployment name="abc.ear" runtime-name="abc.ear"/> 
    </deployments> 
</server-group> 

Я пытаюсь использовать Undertow для обработки соединений и HornetQ для JMS со следующей конфигурацией:

<subsystem xmlns="urn:jboss:domain:messaging:2.0"> 
      <hornetq-server> 
       <security-enabled>false</security-enabled> 
       <cluster-password>${jboss.messaging.cluster.password:root}</cluster-password> 
       <journal-file-size>102400</journal-file-size> 

       <connectors> 
        <http-connector name="http-connector" socket-binding="messaging"> 
         <param key="http-upgrade-endpoint" value="http-acceptor"/> 
        </http-connector> 
        <http-connector name="http-connector-throughput" socket-binding="messaging-throughput"> 
         <param key="http-upgrade-endpoint" value="http-acceptor-throughput"/> 
         <param key="batch-delay" value="50"/> 
        </http-connector> 
        <in-vm-connector name="in-vm" server-id="0"/> 
       </connectors> 

       <acceptors> 
        <http-acceptor http-listener="acceptors-messaging" name="http-acceptor"/> 
        <http-acceptor http-listener="acceptors-messaging-throughput" name="http-acceptor-throughput"> 
         <param key="batch-delay" value="50"/> 
         <param key="direct-deliver" value="false"/> 
        </http-acceptor> 
        <in-vm-acceptor name="in-vm" server-id="0"/> 
       </acceptors> 




      ... 
     <subsystem xmlns="urn:jboss:domain:undertow:1.1"> 
      <buffer-cache name="default"/> 
      <server name="default-server"> 
       <ajp-listener name="ajp" socket-binding="ajp"/> 
       <http-listener name="default" socket-binding="http"/> 
       <http-listener name="remoting-connector" socket-binding="remoting"/> 
       <http-listener name="acceptors-messaging" socket-binding="messaging"/> 
       <http-listener name="acceptors-messaging-throughput" socket-binding="messaging-throughput"/> 
       <host name="default-host" alias="localhost"> 
        <location name="/" handler="welcome-content"/> 
        <filter-ref name="server-header"/> 
        <filter-ref name="x-powered-by-header"/> 
       </host> 
      </server> 
      <servlet-container name="default"> 
       <jsp-config/> 
      </servlet-container> 
      <handlers> 
       <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> 
      </handlers> 
      <filters> 
       <response-header name="server-header" header-name="Server" header-value="WildFly/8"/> 
       <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> 
      </filters> 
     </subsystem> 

      ... 
     <socket-binding name="messaging" port="5445"/> 
     <socket-binding name="messaging-throughput" port="5455"/> 

То же самое я сделал с Remoting.

<subsystem xmlns="urn:jboss:domain:remoting:2.0"> 
    <endpoint worker="default"/> 
    <http-connector name="http-remoting-connector" connector-ref="remoting-connector" security-realm="ApplicationRealm"/> 
</subsystem> 

      ... 
<socket-binding name="remoting" port="${jboss.http.port:4447}"/> 
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/> 

Это позволяет мне запустить экземпляр мастера и развернуть приложение. Экземпляр прослушивает порт 4667 (4447 + смещение порта 220).

Однако развертывание приложения на экземпляре подчиненного устройства завершается сбоем, поскольку он, похоже, не может подключиться к главному экземпляру. Отказ происходит только с Wildfly, но не с JBoss.

Несмотря на то, что сконфигурирован разъем in-vm, предполагается, что подчиненный экземпляр должен соединяться с использованием сетевого интерфейса.

host.xml - Ведомый

... 
<property name="hibernate.search.default.worker.jndi.java.naming.provider.url" value="remote://127.0.0.1:4667"/> 
... 

Подчиненный не может загрузить очереди сообщений, так как соединение с JNDI терпит неудачу как server.l рабы показывает. Ведомое устройство работает на той же машине, что и мастер в локальной тестовой настройке.

Захват сетевого трафика показывает, что мастер подтверждает (TCP ACK) подключение к своему порту 4667, несмотря на то, что «ConnectException: операция завершилась с статусом WAITING после 5000 MILLISECONDS», как указано в журнале ниже.

Любые указатели или подсказки оцениваются.

Сообщение об ошибке от server.log - Подчиненный:

2015-03-26 09:34:43,226 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 59) MSC000001: Failed to start service jboss.persistenceunit."abc.ear/web.war#mc": org.jboss.msc.service.StartException in service jboss.persistenceunit."abc.ear/web.war#mc": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager AssetDerivate 

    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final] 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final] 
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_40] 
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474) 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_40] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_40] 
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_40] 
at org.jboss.threads.JBossThread.run(JBossThread.java:122) 
Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager AssetDerivate 
at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:265) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:528) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:495) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:104) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:363) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:219) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:143) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:74) [hibernate-search-orm-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:52) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:588) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:397) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final] 
at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) [jipijapa-hibernate4-3-1.0.1.Final.jar:] 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final] 
... 8 more 
Caused by: org.hibernate.search.SearchException: HSEARCH000164: Unable to lookup Search queue 'queue/hibernatesearch' and connection factory 'jms/RemoteConnectionFactory' for index 'AssetDerivate' 
at org.hibernate.search.backend.impl.jms.JndiJMSBackendQueueProcessor.initializeJMSQueueConnectionFactory(JndiJMSBackendQueueProcessor.java:56) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.backend.impl.jms.JmsBackendQueueProcessor.initialize(JmsBackendQueueProcessor.java:77) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.backend.BackendFactory.createBackend(BackendFactory.java:85) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.backend.BackendFactory.createBackend(BackendFactory.java:53) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.createBackend(DirectoryBasedIndexManager.java:204) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:102) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:261) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
... 24 more 
Caused by: javax.naming.CommunicationException: Failed to connect to any server. Servers tried: [remote://127.0.0.1:4667 (Operation failed with status WAITING after 5000 MILLISECONDS)] [Root exception is java.net.ConnectException: Operation failed with status WAITING after 5000 MILLISECONDS] 
at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:240) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.HaRemoteNamingStore.namingStore(HaRemoteNamingStore.java:149) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.HaRemoteNamingStore.namingOperation(HaRemoteNamingStore.java:130) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.HaRemoteNamingStore.lookup(HaRemoteNamingStore.java:272) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:87) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:129) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at javax.naming.InitialContext.lookup(InitialContext.java:417) [rt.jar:1.8.0_40] 
at javax.naming.InitialContext.lookup(InitialContext.java:417) [rt.jar:1.8.0_40] 
at org.hibernate.search.backend.impl.jms.JndiJMSBackendQueueProcessor.initializeJMSQueueConnectionFactory(JndiJMSBackendQueueProcessor.java:53) [hibernate-search-engine-4.5.1.Final.jar:4.5.1.Final] 
... 30 more 
Caused by: java.net.ConnectException: Operation failed with status WAITING after 5000 MILLISECONDS 
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:97) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:198) [jboss-remote-naming-2.0.1.Final.jar:2.0.1.Final] 
... 38 more 


ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([("deployment" => "abc.ear")]) - failure description: {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"abc.ear/web.war#mc\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"abc.ear/web.war#mc\": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager AssetDerivate 


Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager AssetDerivate 
Caused by: org.hibernate.search.SearchException: HSEARCH000164: Unable to lookup Search queue 'queue/hibernatesearch' and connection factory 'jms/RemoteConnectionFactory' for index 'AssetDerivate' 
Caused by: javax.naming.CommunicationException: Failed to connect to any server. Servers tried: [remote://127.0.0.1:4667 (Operation failed with status WAITING after 5000 MILLISECONDS)] [Root exception is java.net.ConnectException: Operation failed with status WAITING after 5000 MILLISECONDS] 
Caused by: java.net.ConnectException: Operation failed with status WAITING after 5000 MILLISECONDS"}} 

ответ

0

При поиске сообщения

Failed to connect to any server. Servers tried: [remote://127.0.0.1 

из вашей трассировки стека Я нашел этот вопрос здесь, который звучит похоже:

Поскольку удаленный порт больше не включен в Wildfly Beta1, вам необходимо будет использовать http-rem oting и укажите порт 8080. https://developer.jboss.org/message/843963#843963

Другой подобный запрос также указывает на 8080, как новый порт для HTTP-Remoting: https://developer.jboss.org/thread/239301?start=0&tstart=0

Вы можете попробовать конфигурацию с помощью 8080 (+ ваш порт смещения) вместо?