在这忠心的感谢banq ,xok和charlie。谢谢你们在这段时间关注这个问题,帮我给了这么多的方案。在各位大哥的帮助下,小弟也算解决了这个问题。
我现在的做法是:
1:写一个AutoTimer class 用singlet模式去创建Timer类,作为一个时间触发器,然后用Timer的schedule方法做时间触发。
2:在写一个ApplicationTimerTask 继承TimerTask ,作为schedule的参数。重载run方法,就是去发消息。
写着两个类的目的就是由AutoTimer自动每隔24小时触发一次,去执行ApplicationTimerTask里面的run,也就是去发送一个消息到topic中然后mdb自己执行。
3:我得mdb也做了一些修改。现在是接到消息之后,先在数据库中查找是否有需要复业的记录,如果有就调用session bean的方法去执行复业了。没有就什么也不处理。
也就是说没24小时发一个消息,然后由mdb去执行操作。应该算是搞电了。
呵呵,心情也好多了。
我是在郑州,xok也在郑州那太好了。我得电话13073759611,如果可以的话,能经常联系一下最好了,那样的效率要比发帖快的多么:)。
不过还是要经常来和banq大哥聊聊的,要是能认识banq大哥那就跟好了。
真心希望接到xok的来电。
祝大家都有好心情。
关于jms的问题,在看看有什么看不懂的问题,我在来跟帖,希望还能得到大家的帮助。:)

不用谢。刚刚装了拼音,还是用中文感觉好些。

呵呵,你自己写了Timer,很不错。

我是郑州人,但是现在在加拿大。没办法和你联系,很高兴和你在这里认识。也祝你愉快。

感觉这样的设计很不好!
Timer是一个线程,很容易挂掉的。

不错,尽量减少简化Timer执行内容一般没有问题,这样做有通用性,不需要使用容器产品的特性。

等J2EE1.4出来,你再改用它的Timer就可以了。

我觉的yung大哥说的很有道理,不过暂时由于工作任务,小弟暂且只能这样做,就像banq大哥说的那样,当前我的timer只有一个任务,而且是24小时触发一次,并且执行任务也只是简单的发送一个TextMessage,只是做了一个标记,只要接收到了有这个标记的消息,jms bean 去执行所有的业务过程。我想在这里timer的负载不是很大,一般不会有什么问题。为了防止timer挂,或weblogic挂,我所执行的业务是把当天以前的所有需要复业的纳税人都做复业处理,这样也算能弥补一下了。这是我暂时的想法。
如果yung还有更好的设计方案那就更好了,告诉小弟,小弟先谢过:)

对了,在我的设计中已经解决了Timer挂掉的问题了。首先我是在登陆系统的页面上new 的autotimer类,也就是说只要有人登陆系统,就要new autotimer类,而我在autotimer中用到singleten的模式,使得在整个系统中只有一个timer类活着。这样的话,如果timer类挂了,只要还有人登陆就会又new 一个新的timer了并且我的任务对时间的要求也不是非常高,所以我想,这样是可以的。
希望yung,和banq在看看还有其他的问题么?或者是更好的设计方案

你好没信心!如果是这样的话,java还怎么在Enterprise里面使用?tomcat和jboss就更不要用了.

如果你程序开发正常的话,那么所有使你的Timer死掉的原因都几乎无一例外的会使你的App Server死掉!

如果真的还不满意的话,sf上面好像有专门重启JVM的软件.

不过其实真正的问题是在deploy和support上面不是在develop上面!
build docment要写好,还有最好启动系统的script写的健壮一点!

写一个java timer app不好嘛?
这样用不用bean都可以!

用JVM自启动的不就好了?
绝对比login什么的好.

呵呵,我也碰到了这个问题。最初我想用ejb2.1规范里的timer,但是由于我们的app server是jboss3.0.6,好象还没有实现ejb2.1的规范。后来我们公司的印度哥哥推荐我去用quartzschduker(www.quartzscheduler.org)呵呵,真的很好用。比自己写timer app好多了。大家可以去看看