Struts PlugIn的使用
Struts是一个非常优秀的MVC框架,虽然现在Struts1.x已经显得老了,但是,还是有很多企业继续在使用Struts1.x,Struts2.x估计还要再等一段时间后,才能成为主流。
Struts1.x的Plugin功能做得非常好,像我们一直在使用的StrutsValidation,StrutsTiles都是基于插件方式对Struts进行扩展。之前在做OA系统的时候,就遇到这样一个比较麻烦的业务问题,用户需要我们能提供一个预警监控的功能,当待办时间离结构还有半小时时候,系统会自动发送一条短信给待办人员。因为当时还没有应用到Spring,还没有应用到Opensymphony做定时服务的组件Quarz,我们当时是用的是Timer来做定时服务。但问题是Timer应该在什么时候开始启动?后来就决定使用StrutsPlugin来实现。
当我们觉得Struts功能不够用的时候,我们可以使用Struts的PlugIn框架进行扩展。具体的实现细节如下:
第一、开发一个发送邮件的StrutsPlugIn
程序代码
package zizz.strutsplugin; import java.util.Timer; import java.util.TimerTask; import javax.servlet.ServletException; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; /** * 专门用来发送邮件的插件 * @author zizz at manbuchina * */ public class EmailPlugin implements PlugIn{ /** * Struts初始化的同时,会自动初始化插件. */ public void init(ActionServlet actionServlet, ModuleConfig config) throws ServletException { Timer timer = new Timer(); //每三秒钟触发一次,调用EmailSenderTrigger的run方法. timer.schedule(new EmailSenderTrigger(), 0,3000); } /** * 上下文被Destroy的时候,会调用该方法,释放相应的资源. */ public void destroy() { } }
/** * 邮件发送的定时任务 * @author zizz at manbuchina * */ class EmailSenderTrigger extends TimerTask{ /** * TimerTask需要执行的内容 */ public void run() { checkNewEmail(); sendEmail(); } public void checkNewEmail(){ System.out.println("检查新的未发送 邮件"); } public void sendEmail(){ System.out.println("发送未发送邮件"); } }
第二步,配置StrutsPlugIn
程序代码
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans /> <global-exceptions /> <global-forwards /> <action-mappings /> <message-resources parameter="zizz.strutsplugin.ApplicationResources" /> <!-- 配置自定义的PlugIn --> <plug-in className="zizz.strutsplugin.EmailPlugin"> </plug-in> </struts-config>
第三步,发布应用程序,查看系统运行结果
程序代码
检查新的未发送邮件
发送未发送邮件
检查新的未发送邮件
发送未发送邮件
系统每隔三秒钟,便会检查一下邮件及发送待发邮件
转自:http://www.suneca.com[size=medium][/size]
相关推荐
Kafka 2020-09-18
Wepe0 2020-10-30
杜倩 2020-10-29
windle 2020-10-29
minerd 2020-10-28
mengzuchao 2020-10-22
Junzizhiai 2020-10-10
bxqybxqy 2020-09-30
风之沙城 2020-09-24
kingszelda 2020-09-22
大唐帝国前营 2020-08-18
yixu0 2020-08-17
TangCuYu 2020-08-15
xiaoboliu00 2020-08-15
songshijiazuaa 2020-08-15
xclxcl 2020-08-03
zmzmmf 2020-08-03
newfarhui 2020-08-03
likesyour 2020-08-01