Escribí un pequeño programa que usa el agente incrustado activemq. El programa se ejecuta correctamente en una máquina, pero no funciona en otra. Ambos servidores tienen sun os 10 y java 7 y también activemq 5.5.1. Quiero decir que con no funciona, la nueva llamada al constructor BrokerService () no regresa por un tiempo (un par de minutos). El código del fragmento es el siguiente.

Gracias por los consejos.

public static void main(String[] args) {

    // .... 
    try {
        p.start("tcp://192.168.4.2:61616");
    } catch (MessagingException e) {
        e.printStackTrace();
    }
    // ....

}


public void start(String brokerAddress) throws MessagingException {
    try {

        System.out.println(">>> initialize 2");
        broker = new JmsBroker(brokerAddress, brokerAddress.substring(6));
        System.out.println(">>> initialize 3");
        broker.start();
        System.out.println(">>> initialize 4");


        messageProducer = new JmsProducer(brokerAddress,
                                          "MESSAGING_IF_NAME",
                                          false,
                                          5000);
        System.out.println(">>> initialize 5");

    } catch (JMSException e) {
        System.out.println(e);
    }

}


public class JmsBroker extends Thread {

private BrokerService       broker;
private Object              lock;
private static final Logger logger = LoggerFactory.getLogger(JmsBroker.class);
private String              connector;


public JmsBroker(String jmsAddress, String brokerName) throws MessagingException {
    broker = new BrokerService(); // !!!!! PROBLEM
    broker.setBrokerName(brokerName);
    broker.setUseJmx(true);
    broker.setUseLoggingForShutdownErrors(true);
    broker.setSchedulerSupport(false);
    broker.setPersistent(false);
    connector = jmsAddress;

    try {
        System.out.println(">>> s1");
        broker.addConnector(connector);
        System.out.println(">>> s2");
        broker.start(true);
        System.out.println(">>> s3");

        while (!broker.isStarted()) {
            Thread.sleep(10);
            System.out.println("BROKER NOT STARTED");
        }

        logger.info("JMS BROKER STARTED");
        System.out.println("JMS BROKER STARTED");
    } catch (InterruptedException e) {
        throw new MessagingException(e);
    } catch (Exception e) {
        throw new MessagingException(e);
    }
}

public void run() {
    try {
        lock = new Object();
        synchronized (lock) {
            lock.wait();
        }
    } catch (Exception e) {
        logger.error("", e);
    }
}

}
1
Erdinç Taşkın 28 may. 2012 a las 17:45
¿Qué sucede si descarga amq stand alone dist. y simplemente ejecutarlo? ¿Seguirá colgando al iniciar? Quizás los registros te den alguna pista.
 – 
Petter Nordlander
29 may. 2012 a las 02:03
No estoy muy seguro de que "Stand alone dist" signifique, pero si significa ejecutar el comando "activemq start". Es un trabajo que no cuelga (pero tiene algunas excepciones en los registros).
 – 
Erdinç Taşkın
31 may. 2012 a las 13:03
Error de transporte: java.net.SocketException: opción no válida o restablecimiento de socket por un par remoto java.lang.ClassNotFoundException: org.apache.activemq.web.filter.ApplicationContextFilter FAILED spring: javax.servlet.UnavailableException: org.apache.activemq.web .filter.ApplicationContextFilter javax.servlet.UnavailableException: org.apache.activemq.web.filter.ApplicationContextFilter java.lang.ClassNotFoundException: org.apache.activemq.util.FilenameGuardFilter FAILED FilenameGuardFilterException: javaqUna disponible .util.FilenameGuardFilter
 – 
Erdinç Taşkın
31 may. 2012 a las 13:09
Javax.servlet.UnavailableException: org.apache.activemq.util.FilenameGuardFilter Error de transporte: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport
 – 
Erdinç Taşkın
31 may. 2012 a las 13:09

1 respuesta

La mejor respuesta

El registro incorrecto en el archivo etc / hosts causa este problema. Después de eliminar el problema se resuelve.

0
Erdinç Taşkın 26 jun. 2012 a las 11:45