互联网博客
http://internet.blog.enorth.com.cn >复制 >收藏本站
首页 IT技术(99) 音视频(7) 汽车(6) 搜索引擎(2) 我的日志(34) 歌词(12) James(19) 笑话(10) Blog技术(4) 诗词歌赋(7)

北方博客 > 首页 > James -- 编写一个定制的Mailet
Google
3上一篇: James--编写一个定制的匹配器 下一篇: 企业级邮件服务器Apache James介绍-用matchers 和 mailets构建基4
[James]James -- 编写一个定制的Mailet
Tags: james mailet apache

通常来说,实现定制的mailet是个简单的任务,复杂性主要在于编码实现mailet完成的实际工作。这种简单性主要是因为Mailet接口的简单性和Mailet包中提供了GenericMailet类。

以下的讨论均假定所实现的任何maile都是GenericMailet的子类。GenericMailet类将配置和日志服务的细节进行了抽象。它还提供了 init() 和 destroy()方法的默认实现。这些都可以很容易的重载以提供有用的功能。

通常,你仅需要实现四个方法,它们是:init()、 destroy()、 getMailetInfo()和 service(Mail)。并且仅最后一个方法是必须实现的。

配置
正如在 SpoolManager 配置部分描述的那样, 对mailets的配置是通过(名字,值)这样的字符串对进行的。这些值会在初始化的时候传入到Mailet中(尽管这个过程实现的细节被GenericMailet类隐藏起来了)。 GenericMailet提供了访问这些配置信息的getInitParameter(String) 方法。如果设置了配置参数的值,以这个参数的名字为参数会返回它的值,否则返回null。在init(), destroy(),和service(Mail) 方法中都可以得到配置参数。

Logging
Mailet API提供了一个简单的日志机制。它不支持日志记录的级别,所以必须在Mailet代码里实现所有的日志过滤器。可以通过调用GenericMailet中的log(String) 或者 log(String,Throwable)两个方法中的任何一个记录日志信息。 在init()、 destroy()和 service(Mail)方法中都可以调用日志方法。

Mailet的getMailetInfo()的值是和那个mailet的日志信息相关的。所以你可能希望重载这个方法以便可以分清不同Mailet的日志记录信息。

初始化
初始化是Mailet生命周期的一部分,Mailet实例创建后马上要进行初始化。每个Mailet实例都会进行并仅进行一次初始化操作。 Mailet的初始化阶段通常是其进行配置和创建其自身专用资源的阶段。如果你的Mailet不需要,你可能没必要执行任何初始化操作。需要通过重载GenericMailet的 init()方法来实现初始化逻辑。

服务
Mailet的所有邮件处理逻辑都应该放在service(Mail)方法中。mailet每次进行邮件消息的处理时都会激活该方法,被处理的消息会被做为一个Mail 接口(Mailet API的一部分)实例传送给service(Mail)方法。

Mail接口本质上一个轻型的包,它与JavaMail的MimeMessage类有几个重要的区别。可以参考关于这个接口的Javadoc文件以了解这个包中提供的额外的方法的描述。

销毁
销毁是Mailet生命周期的一部分,当容器清除Mailet的时候,必须确保mailet被销毁。每个Mailet实例都会进行并仅进行一次销毁操作。Mailet通常在这个阶段释放其专用的资源。如果你的Mailet不需要,你可能没必要执行任何销毁操作。需要通过重载GenericMailet的 destroy()方法来实现销毁逻辑。


部署一个定制的Mailet
一旦实现了Mailet,仅仅还需要两步就可以完成Mailet的部署了。

将你的Mailet添加到Classpath
Mailet必须被加入到James的classpath中以便James能够载入。有如下两种方法可以将定制的Mailet加入到James的classpath中:

1.下载源码发布文件,解压缩后将包含定制的Mailet类的jar文件添加到lib目录下,然后依照这里的指示创建一个新的.sar文件。现在这个新的.sar文件就包含你定制的类了。

或者

2. 将包含定制的类文件的jar文件放到James安装文件的lib子目录中。此外还必须解压.sar文件,将其中的JavaMaile和James的jar文件添加到这个目录中。

配置James
处理流程的配置在文档的 其它文件中讨论。篇幅所限,这里不对mailet部署的配置细节展开讨论。这里仅提出需要着重注意的两点,第一是将定制的mailet添加到适当的mailet包列表中,第二点是你的mailet的名字不能与这里描述的任何mailet相冲突。


字体:
引用地址 http://internet.blog.enorth.com.cn/article/30812.shtml


allenzz7 | 2006-03-01 11:29


Re:James -- 编写一个定制的Mailet
james中有个GenericMailet类,我们写程序时,一般需要继承这个类。我想问下,服务器是什么时候调用mailet中的service方法的呢?我怎么调试这个方法呢? 如果你能帮忙,非常谢谢。 liangping328@hotmail.com

liangping | 2006-04-13 09:46


发表评论
 
昵称
主页
标题
内容
算式的解
看不清校验算式?
 



 


公告

抗震救灾

众志成城

站内搜索

最新日志

linux 中文显示乱码解决办法
国足欢迎你
A780的快捷键图标设置
Jfreechart中画双Y坐标的折线图
在dwr的回调函数中传递多个参数
Lemon Tree
去掉jsessionid
Windows media encoder及其SDK编程说明
保留weblogic中jsp编译后生成的java文件
行为艺术家扮“房奴”抗议房产商(图)
DWR 调用返回值方法
民间节油“秘笈” “节油王”道出节油六高招
开车十五年心得!真真实实的26条教训!
ChannelSocket INFO: connection timeout reached
杭州干部徐新贤死了都要爱!
创业前请回答这些问题
Linux下让编译安装的Apache自动启动
IllegalStateException: getOutputStream() 异常的解决方案
LINUX下配置系统环境变量
Servlet图像处理 X11错误解决方法
解决winxp搜索不到文件中的某个字或词组的问题
夜的第七章
Linux下两种自动启动Tomcat的方法
使用mod_usertrack跟踪用户
apache2.0 prefork和worker模块性能调优

网友评论

Re:Apache-WebLogic plugin插件的安装
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个简单的DWR例子
Re:一个女人的十年 [录音+文字]
Re:一组照片
Re:一组照片
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:apache2.0 prefork和worker模块性能调优
Re:蒋捷《虞美人·少年听雨歌楼上》
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]

我的链接

妮妮的世界
小宝成长日记
汽车维修、保养专业站

CSS2中文手册
SpringFramework中文论坛
以前的事 现在的事 将来的事
DynamicDrive
CSDN 金·评·没|YanHui's blog
tomcat 5.0 文档
sixsun的blog
王育琨专栏
西安信息资源网
[埃里克森]的Blog



flashplayer.cn

Apache HTTP Server Version 2.2 文档
天津一汽
Tortoise Cvs Homepage
天津博客
Java开源大全
OpenSymphony
Java视线论坛

网友留言

<写留言>
我们的感觉好比一个十年的女人
你的博客做得很棒
认识你好高兴
其实我也是学计算机的
你好,朋友!
你是不是搞程序的?
交朋识有
祝你新年快乐!
经常关注你的blog,希望有机会认识一下!
元旦快乐

站内统计

日志总数:200
今日访问:1289
访问总数:1145155
评论总数:324
留言总数:14

存档

2008年01月(1)
2007年12月(3)
2007年11月(2)
2007年10月(1)
2007年08月(2)
2007年07月(1)
2007年06月(3)
2007年05月(2)
2007年04月(5)
2007年03月(2)
2007年01月(2)
2006年12月(3)
2006年11月(1)
2006年09月(5)
2006年08月(2)
2006年07月(8)
2006年06月(7)
2006年05月(9)
2006年04月(13)
2006年03月(30)
2006年02月(23)
2006年01月(9)
2005年12月(12)
2005年11月(23)
2005年10月(23)
2005年09月(2)

控制台入口

用户名
密 码