hunterli0408 2009-01-18 16:06
浏览 206
已采纳

关于JMS的一个怪异的问题(高分求教)

最近项目里有一个邮件模块,过程基本上就是通过JMS调用EJB来发信。
工程是发布到weblogic8.1上,MailSession,JMS和EJB都配好了。
开始时没有问题,但有一次我写了一个测试程序来发信,那封信的各个项目(发信人收信人等等)都是乱填的。
结果信没法出去,程序出现异常,weblogic控制台开始不停的输出异常信息,然后我就把weblogic给停了。
第二天,我再启动weblogic,控制台上又开始疯狂的输出异常,感觉就像死循环。
因为我们要进行单体测试,所以我们小组里的每个人的机器上都有一份weblogic服务器的拷贝,基础配置都是一样的,以便在自己的机器上发布程序来测试,避免互相影响。
现在最奇怪的地方就在这里,自从我这边server发疯之后,其他人的server启动时也都开始发疯,最后没有办法,只好把发布的EJB给删掉,服务器才启动起来。
个人感觉是JMS的问题,信息发送失败,JMS会不停地继续尝试吗?如何关闭?

不知谁能给解释一下,或给一个解决方案,不胜感激。
[b]问题补充:[/b]
to lewhwa:

我们那几台机器上的weblogic虽然配置都一样,但都是彼此独立的,我想知道的其实是,为什么我这里出错,会连累到他们。他们的server上虽然也有与送信模块相关的基础配置,但并没有发布和运行我的测试程序。我现在想有可能是数据库的原因,因为我们使用的数据库是一个,难道我在发信的时候,程序向数据库插入了数据,然后启动server的时候,发信模块会首先检索数据库,以至于我们每次启动server,每个人都会出异常。但我看代码也没发现发信模块与数据库有关联,还得继续调查。

如果跟数据库没有关系的话,为什么JMS会一直发那?它是在哪里记录有发送失败的消息的?因为重启server时它还是会重发消息。

[b]问题补充:[/b]
找到问题的症结所在了。共享一下:
Weblogic确实会将将JMS发送信息记录下来,有数据库和文件系统两种方式。
我这边是记录在数据库中,在配置JMS的时候,会建立JMSStore,weblogic会要求输入一个数据库连接池名。然后,weblogic会自动的在数据库中建立
myserverjmsstore
jms_storewlstore
myserverjmsstore
三张表,来存储JMS信息。
(我是照着环境构筑书构筑的环境,根本就没看这些配置是啥意思,哎!)

这样的话,上面怪异现象的原因就不难解释了。

to:lewhwa
感谢你的回答,在Weblogic 的JMS设置里确实找到了重发设置,我那里面默认被设置成了-1,意思是无限重发,结果server就疯了,呵呵。

  • 写回答

2条回答 默认 最新

  • wwwghost 2009-01-18 17:53
    关注

    [quote]我们那几台机器上的weblogic虽然配置都一样,但都是彼此独立的,我想知道的其实是,为什么我这里出错,会连累到他们。他们的server上虽然也有与送信模块相关的基础配置,但并没有发布和运行我的测试程序。我现在想有可能是数据库的原因,因为我们使用的数据库是一个,难道我在发信的时候,程序向数据库插入了数据,然后启动server的时候,发信模块会首先检索数据库,以至于我们每次启动server,每个人都会出异常。但我看代码也没发现发信模块与数据库有关联,还得继续调查。[/quote]
    先把与数据库配置相关的应用先停掉。只跑JMS相关的。请再试试!
    [quote]如果跟数据库没有关系的话,为什么JMS会一直发那?它是在哪里记录有发送失败的消息的?因为重启server时它还是会重发消息。[/quote]
    JMS肯定要做persistence的,以保证Message不会丢失。至于是持久化到数据库还是文件,曾经见过两种方式都有。这就是为何要重发的原因。怎么设置重发间隔,还是Weblogic的参考说明吧!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?