欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux环境下连接SUN MQ 出现 connection refused异常的解决方案

程序员文章站 2022-07-13 12:17:28
...
    最近研究jms,一开始挺顺利,使用环境是windows,glassfish,sun的mq, spring。其实就是用spring提供的JmsTemplate实现发送jms消息到部署在windows上的glassfish的中去,glassfish是sun公司的一款服务器,所以他集成了sun自己的消息服务器sun mq,
   刚开始用spring的方式,还是自己用jms.jar imq.jar 实现发送消息都没有问题,用spring实现jms 远程方法调用(jms invoke)也很简单。spring自己写了一套远程调用标准的数据格式,RemoteInvocation类和RemoteInvocationResul类。基本上不用自己再做额外的事情了。就这样,本来三天的工作量,半天就完成了,剩下的时间就这里逛逛,那么逛逛,到第三天的时候,项目经理跟我说,我们的jms是要在Linux环境下跑的,你到Linux下面先测一下吧,心想,这个应该问题不到,事实证明低估了这个难度,到Linux下一开始报找不到JNDI资源,怎么会找不到呢?我又重新检查了一遍配置的JMS连接工厂名和队列名,都没有问题呀。捣鼓了半天还是找不到资源,最后试着在Linux下建一个JMS连接工厂的资源,发现了问题所在,原来在linux上面建JMS资源需要关联到我的work unit上面去,找到问题后,马上修改测试资材,将work unit在JMS资源之前创建,并将JMS资关联过去。还别说,找不到JNDI资源的问题真解决了,不幸的是,出现了新问题,JMS connection refused,到网上一查,说是要启动代理(Sun\messageQueue\mq\bin\imqbrokerd),于是启动了消息代理,问题全解决了,

    这次的问题说明了,只要环境有一点点变化,你的程序可能都会出现不同的结果,本来在Windows上消息代理是自动打开了,但linux下可能出于安全的考虑默认是关闭的。所以以后做事一定要小心,要考虑到外界因素的变化可能对我的程序产生的影响。