HornetQ JMS: java.lang.NoSuchMethodError

к сожалению, пытаясь заставить службу JMS работать с HornetQ, я запускаю сообщение об ошибке формы в сообщение об ошибке. Предыдущая ошибка была связана с отсутствующим файлом core.jar. Предыдущая ошибка

В конце концов, я пытаюсь реализовать простой пример производителя/потребителя в виде службы jms. (На основе «Руководства разработчика обмена сообщениями HornetQ»)

package chapter01;

import javax.jms.JMSException;
import javax.naming.NamingException;

public class ECGMessageConsumerProducerExample {

    public static void main(String[] args) throws NamingException, JMSException {
        // TODO Auto-generated method stub


         javax.naming.Context ic = null;
         javax.jms.ConnectionFactory cf = null;
         javax.jms.Connection connection = null;
         javax.jms.Queue queue = null;
         javax.jms.Session session = null;
         com.mongodb.Mongo m;
         com.mongodb.DB db;
         String destinationName = "queue/DLQ";


         java.util.Properties p = new java.util.Properties();
         p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
         "org.jnp.interfaces.NamingContextFactory");
         p.put(javax.naming.Context.URL_PKG_PREFIXES,
         "org.jboss.naming:org.jnp.interfaces");
         p.put(javax.naming.Context.PROVIDER_URL, "jnp://localhost:1099");
         ic = new javax.naming.InitialContext(p);


         cf = (javax.jms.ConnectionFactory)ic.lookup("/ConnectionFactory");
         queue = (javax.jms.Queue)ic.lookup(destinationName);
         connection = cf.createConnection();
         session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
         connection.start();


         String theECG = "1;02/20/2012 14:01:59.010;1020,1021,1022";
         javax.jms.MessageProducer publisher = session.createProducer(queue);
         javax.jms.TextMessage message =
         session.createTextMessage(theECG);
         publisher.send(message);
         System.out.println("Message sent!");
         publisher.close();





    }

}

Столкнувшись с ошибками, я, вероятно, добавил ненужные банки:

Банки

Однако я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoSuchMethodError: org.hornetq.api.core.client.ClientSessionFactory.copy()Lorg/hornetq/api/core/client/ClientSessionFactory;
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:612)
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116)
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:111)
    at chapter01.ECGMessageConsumerProducerExample.main(ECGMessageConsumerProducerExample.java:33)

Я ожидаю, что ошибка будет вызвана несоответствием между jar-файлами, используемыми сервером, и используемыми клиентом. Но так как я нуб-программист, то толком не знаю, какие именно баночки с подходящими версиями нужны.


person Julian Herbold    schedule 20.07.2017    source источник


Ответы (1)


Попробуйте определить NettyConnectorFactory как соединитель, как в ссылка на jboss.

например, в файле hornetq-configuration.xml:

<connectors>
    <connector name="netty">
        <factory-class>
            org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
        </factory-class>
        <param key="port" value="5446"/>
    </connector>
</connectors>    
person user7294900    schedule 20.07.2017
comment
соединитель уже был определен в некластеризованном автономном файле конфигурации: ‹connectors› ‹connector name=netty› ‹factory-class›org.hornetq.core.remoting.impl.netty.NettyConnectorFactory‹/factory-class› ‹param key=host value=${hornetq.remoting.netty.host:localhost}/› ‹param key=port value=${hornetq.remoting.netty.port:5445}/› ‹/connector› - person Julian Herbold; 20.07.2017