1

activemq 組み込みブローカーを使用する小さなプログラムを作成しました。プログラムは 1 台のマシンで正常に実行されますが、別のマシンでは動作しません。どちらのサーバーにも、sun os 10 と Java 7 があり、activemq 5.5.1 もあります。つまり、動作しません。 new BrokerService() コンストラクターの呼び出しがしばらくの間 (数分) 返されません。スニペットコードは以下のようなものです。

アドバイスありがとう..

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);
    }
}

}
4

1 に答える 1

0

etc/hosts ファイルの間違ったレコードがこの問題の原因です。削除後、問題は解決しました。

于 2012-06-26T07:45:17.327 に答える