最近项目里有一个邮件模块,过程基本上就是通过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就疯了,呵呵。