使用IM中的batch群发邮件-程序员宅基地

技术标签: C#  C++  C  DAO  J#  NBS  

 

调查任务:尝试利用 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 给多个客户发送邮件,搞定。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yyg_5106/article/details/83332745

智能推荐

机器学习——决策树(2020最新版)-程序员宅基地

文章浏览阅读3.2k次,点赞7次,收藏43次。决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。

【南京邮电大学】密码学实验2:国家商用密码SM4算法python实现(详细注释、附运行结果)_python sm4-程序员宅基地

文章浏览阅读1.4k次。国密SM4的Python实现其他人也写了,本程序的优点在于考虑了明文输入不足128bits(二进制下)的情况,并给出了大量注释即调试用代码(已注释),方便大家进行调试、优化。希望大家通过本程序一起学习呀。_python sm4

jQuery - 获取内容和属性浅谈-程序员宅基地

文章浏览阅读360次,点赞4次,收藏9次。("#btn1").click(function(){ alert("值为: " + $("#test").val());"W3C 文档对象模型独立于平台和语言的界面,允许程序和脚本动态访问和更新文档的内容、结构以及样式。jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。jQuery 拥有可操作 HTML 元素和属性的强大方法。jQuery 中非常重要的部分,就是操作 DOM 的能力。jQuery attr() 方法用于获取属性值。

科普帖:一起来聊聊开源数据库MongoDB-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏21次。本教程向你介绍了MongoDB数据库。你将发现如何安装该软件、操作数据,并将数据设计技术应用于你自己的应用程序。

支付宝统一支付回调接口(适用于H5、PC、APP)_支付宝支付回调接口-程序员宅基地

文章浏览阅读1.9w次,点赞8次,收藏20次。支付宝统一支付回调接口(适用于H5、PC、APP)_支付宝支付回调接口

iOS判断手机中是否 有 SIM卡---备用-程序员宅基地

文章浏览阅读222次。[CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted]可以判断是否插入了sim卡。前提是把下面的代码随便复制到一个头文件里面,然后引入CoreTelephony.framework即可。extern NSString* c*****t kCTSMSMessageReceivedNotifica..._ios 怎么判断手机有没有插卡

随便推点

【车间调度】基于matlab灰狼算法GWO求解置换流水车间调度问题PFSP【含Matlab源码 3357期】-程序员宅基地

文章浏览阅读254次,点赞10次,收藏2次。灰狼算法GWO求解置换流水车间调度问题PFSP完整的代码,方可运行;可提供运行操作视频!适合小白!

ROSubuntu实战:理解话题topics_ubuntu用什么指令查看话题数据-程序员宅基地

文章浏览阅读739次。1.准备工作1.1 roscore在新的终端中,运行roscore1.2 turtlesim运行turtlesim$ rosrun turtlesim turtlesim_node1.3 乌龟键盘遥操作我们需要有东西来操控乌龟移动。打开新的终端输入$ rosrun turtlesim turtle_teleop_key现在可以使用键盘的箭头按钮来控制乌龟移动。切记一定要在tu..._ubuntu用什么指令查看话题数据

2020 款大众朗逸车上坡低速转弯时发动机易熄-程序员宅基地

文章浏览阅读95次。正常情况下,发动机转速降低时,喷油脉宽应变小,由此怀疑发动机熄火是由供油不足引起的。,这说明虽然燃油泵电流降低,但燃油泵转速升高,由此推断此时燃油泵抽吸不到燃油,在空转,负载变小。接车后试车,起动发动机,发动机怠速运转正常,且组合仪表上没有故障灯点亮。所示,其中蓝色线为曲轴位置传感器信号,黄色线为进气歧管绝对压力传感器信号,红色线为气缸。喷油信号,绿色线为燃油压力,橙色线是根据曲轴位置传感器信号计算的发动机转速(利用。所示,其中蓝色线为曲轴位置传感器信号,黄色线为燃油泵电流,红色线为气缸。

matlab中的SVM_matlab svm函数-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏7次。Matlab SVM最近项目要用到SVM,时间紧,所以就直接用Matlab提供的库函数。另外,这个最负盛名的libsvm,台湾林智仁教授开发的开源包,http://www.csie.ntu.edu.tw/~cjlin/libsvm/业界很有名的一个包,有各种各样的接口,现在最新更新到Python。 Matlab中SVM的函数主要有两个:%svmtrain:s_matlab svm函数

google earth 卫星无偏移免费下载,91卫图助手_卫星助手等高线-程序员宅基地

文章浏览阅读2.6k次。google earth 卫星无偏移免费下载,91卫图助手91卫图助手下载器永久免费啦!!免费版就能轻松下载Google Earth等几十种无偏移影像、历史影像,及使用包含在线标注、投影转换(支持54,80,2000坐标系以及地方独立坐标系)在内的数十种功能,而且是永久免费的!!本软件可下载Google Earth影像、历史影像、陆地及海洋高程,矢量路网建筑地名点,全国乡镇及街区行政区划,影像无..._卫星助手等高线

32G内存服务器如何设置虚拟内存,大内存服务器设置虚拟内存-程序员宅基地

文章浏览阅读3.3k次。大内存服务器设置虚拟内存 内容精选换一换在性能优化时,需要遵循一定的原则,主要有以下几个方面:对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。一次只对一个性能指标参数进行调整。分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。调优分析思路如下:性能优化首先要较为精..._32g内存最佳虚拟内存

推荐文章

热门文章

相关标签