使用IM中的batch群发邮件

 

调查任务:尝试利用 group 管理页面的 batch 机能,调查一下是否可以用来实现发送邮件。

 

调查思路:

 

IM group 管理的 batch 机能中,参照既存 batch 的例子(参考 Java 模式而非 JS 模式,将既存的 class 文件反编译,看既存 batch 代码的大概思路),自己先建个最简单的 batch 例子(打印一句话),设置一下时间,让它 1 分钟后就运行,测试通过, OK

 

-》就是打印--------batchTest----------的那句话(20090518追加)。

 

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Config accept: <default>test (2009/01/14|09:41:00 -> Wed Jan 14 09:41:00 GMT+08:00 2009)

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Scheduler re-started the surveillance of time.

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Program execution: <default>test

[INFO] j.c.i.s.s.HTTPActionEventListenerServlet - HTTPActionEvent is received: name=jp.co.intra_mart.foundation.service.provider.application.core.TemporaryFilterHTTPActionEvent

[INFO] j.c.i.s.s.HTTPActionEventListenerServlet - HTTPActionEvent-request received: name=jp.co.intra_mart.foundation.service.provider.application.core.TemporaryFilterHTTPActionEvent

[INFO] j.c.i.s.b.i.BatchEventListenerHTTPActionEvent - Batch request received from ×××× /172. ×× . ×× . ×× : (default)test

------------------batchTest-------------------------

[INFO] j.c.i.s.b.TimerThread - Batch-Program success: <default>test(JAVA://test.BatchTest): 149[millisec] 
 

 

再使用 batch 发送一封写死的邮件, OK

 

-》运行SendMailTest程序。(20090518追加)

 

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Config accept: <default>SendMaiiTest (2009/01/14|09:58:00 -> Wed Jan 14 09:58:00 GMT+08:00 2009)

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Scheduler re-started the surveillance of time.

[INFO] j.c.i.s.b.BatchScheduleServiceProviderThread - Batch-Program execution: <default>SendMaiiTest

[INFO] j.c.i.s.s.HTTPActionEventListenerServlet - HTTPActionEvent is received: name=jp.co.intra_mart.foundation.service.provider.application.core.TemporaryFilterHTTPActionEvent

[INFO] j.c.i.s.s.HTTPActionEventListenerServlet - HTTPActionEvent-request received: name=jp.co.intra_mart.foundation.service.provider.application.core.TemporaryFilterHTTPActionEvent

[INFO] j.c.i.s.b.i.BatchEventListenerHTTPActionEvent - Batch request received from ×××× /172. ×× . ×× . ×× : (default)SendMaiiTest

[INFO] j.c.i.s.b.TimerThread - Batch-Program success: <default>SendMaiiTest(JAVA://test.SendMaiiTest): 170[millisec]

  
 

 

下面就剩下一个问题了:怎样向从数据库中读取出来的所有用户发送邮件。问题的焦点就是如何从数据库中取得所有用户。

 

因为既存例子程序的执行流程是从 service -》eventListeren -》BL -》dao ,且此过程中都有(和 IM 容器相关的参数在传递),直接只用 dao 来取用户是不行的,往源头找,只有 service 层的 service () 方法没有参数(原先例子中是页面操作时转给这个方法的)。

 

我尝试在我的 batch 文件中直接调用这个方法,不行,报错, request 中的 session 参数错误,看来,还是跟“环境参数”有关系的。

 

调查受阻,在多次尝试无果后,适时请教一下高手,他先尝试了创建 event 这个思路,行不通。接着,他参照了 jp.co.intra_mart.foundation.bpw.model.data. BPWSetReferWorkTable 文件的 insertWorkTable 方法中,有这样一段代码:

 

      DataAccessController controller = DataManager.getDataManager().getDataAccessController();

       ReferMasterDAOIF daoIF = (ReferMasterDAOIF)controller.getDAO("bpw", "daorefermaster", groupID); 

 

-》第一句:从Data管理器中获取数据访问控制器;第二句:数据访问控制器,根据传入的参数,获取对应的DAO接口。(20090518追加)

 

 

他认为这段应该就是取 dao 的(和我们前面例子程序中用的方法从原理上讲是一致的),我赶紧尝试,依葫芦画瓢,将参数换成我们例子程序中的 employee OK ,果然可以,可以取得 dao

 

下面的问题就好解决了,我将用户取出来,调用发邮件的方法,循环一下,就向各个用户发送了邮件。

 

OK ,使用 batch 给多个客户发送邮件,搞定。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值