【问题标题】:Connection with JMS (Apacher ServiceMix) from jboss 7.1从 jboss 7.1 连接 JMS (Apacher ServiceMix)
【发布时间】:2017-05-26 17:16:37
【问题描述】:

我在 jboss 7.1 中部署了一个 Web 应用程序,该应用程序必须将消息发送到在 apacheServiceMix 6.1.0 中实现的 JMS QUEUE。

每当我想发送消息时,我都会收到此错误:

Exception in thread "JMX connector" java.lang.UnsupportedOperationException: JBAS011859: Naming context is read-only

我不确定这是配置问题还是我的代码的问题。

ConnectionFactory factory = null;

try{
    factory = new ActiveMQConnectionFactory(jmsUser, jmsPassword, jmsUrl);
    Producer producer = new Producer(factory, jmsQueue);
    Map<String, String> mapMessage = new HashMap<String, String>();
    mapMessage.put("From", "mail@from.com");
    mapMessage.put("to","mailTo");
    mapMessage.put("subject", "Subject");
    mapMessage.put("template", "template.vm");
    mapMessage.put("user", "username");
    mapMessage.put("link", "link");

    producer.getMessages().add(mapMessage);

    producer.run();
    producer.close();

} catch (Exception e){
    LOG.error(e.getMessage(), e);
}

Producer.java

public class Producer{

private ConnectionFactory factory;
private Connection connection;
private Session session;
private MessageProducer producer;
private List<Map<String, String>> messages;

public Producer(ConnectionFactory factory, String queueName) throws JMSException
{
    this.factory = factory;
    connection = factory.createConnection();
    connection.start();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Destination destination = session.createQueue(queueName);
    producer = session.createProducer(destination);
}

public void run() throws JMSException
{
    for(Map<String, String> mapMessage : messages){
        ObjectMessage message = session.createObjectMessage();
        for (Map.Entry<String, String> entry : mapMessage.entrySet()){
            message.setStringProperty(entry.getKey(), entry.getValue());
        }
        producer.send(message);
    }        
}

public void close() throws JMSException
{
    if (connection != null)
    {
        connection.close();
    }
}

public List<Map<String, String>> getMessages() {
    if(messages == null){
        messages = new ArrayList<Map<String, String>>();
    }
    return messages;
}

public void setMessages(List<Map<String, String>> messages) {
    this.messages = messages;
}

}

我尝试使用 -Dorg.apache.activemq.broker.jmx.createConnector=false 参数启动 jboss,结果相同。

有什么线索吗?

【问题讨论】:

    标签: java jms jboss7.x apache-servicemix


    【解决方案1】:

    我已经能够解决这个问题。

    我使用的是 vm (url vm://) 协议,当我将其更改为 tcp tcp://:61616 时,它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多