编写一个定制的Mailet

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 编写一个定制的Mailet 通常来说,实现定制的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相冲突。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值