c568468995 2018-11-30 11:19 采纳率: 0%
浏览 336

JBOSS中配置JMS消息中心,如何实现远程发送消息

现在我在JBOSS中配置了一个叫 queue/myqueue的消息队列

启动JBOSS之后,在本机 A应用可以发送 消息到JBOSS上面到JMS队列

现在我换到了另外一台机子 B, 开启了JBOSS远程调用A机子的服务是可以被访问到到.

但是发送消息的语句就是发送不了, 报错是现实远程访问实例化工厂不了....
##如图
报的错

下面是我的调用代码


 import java.util.Properties;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class Textqueue {

    public static void main(String[] args) throws Exception {

        //定义JBOSS默认连接的JNDI
        final String CONNECTION_FACTORY_JNDI="ConnectionFactory";
        //获取JNDI服务所需的Context对象
        Context ctx = getInitalContext();
        //通过JNDI获取连接广场
        ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(CONNECTION_FACTORY_JNDI);
        //通过JNDI查找消息目录
        Destination destination = (Destination) ctx.lookup("queue/myqueue");
        //创建连接工厂
        Connection conn = connectionFactory.createConnection();
        //创建连接会话
        Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //创建会话生产者/发送者
        MessageProducer sender = session.createProducer(destination);
        sender.setDeliveryMode(DeliveryMode.PERSISTENT);//设置消息传递模式
        sender.setTimeToLive(20000);//设置消息有效时间
        //会话创建一个大文本消息
        TextMessage message = session.createTextMessage();
        message.setText("Hello my first JMS");
        //发送消息
        sender.send(message);
        //再发一次
        for(int i=0;i<=10;i++){
            message.setText("哈哈,有意思"+i);
            sender.send(message);
        }
        //关闭资源
        System.out.println("client发送完成!");
        session.close();
        conn.close();

    }

    private static Context getInitalContext(){

        final String INIT_FACTORY = "org.jnp.interfaces.NamingContextFactory";
        final String SERVER_URL = "jnp://192.168.1.118:1099";
        Context ctx = null;
        try {
            Properties prop = new Properties();
            prop.setProperty(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
            prop.setProperty(Context.PROVIDER_URL, SERVER_URL);
            ctx = new InitialContext(prop);
        } catch (NamingException e) {
            e.printStackTrace();
            System.out.println("不能连接 Jboss在:"+ SERVER_URL);
        }
        return ctx;
    }



}
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2018-11-30 13:17
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献