中小企业web邮件系统的设计与实现(6)

2019-02-15 12:15

四川大学工程硕士学位论文 中小企业web邮件系统的设计与实现

4 电子邮件系统的实现

4.1系统实现技术背景

4.1.1开发环境

操作系统:Windows 2000 Server

JDK:JavaTM 2 Platform Standard Edition Development Kit 5.0 开发工具:Eclipse Project Release 3.2.1

4.1.2相关组件技术

(1)socket编程

Socket机制用到的类有java.net.ServerSocket、java.net.Socket等。服务器端以监听端口号和接受队列长度为参数实例化ServerSocket类,缺省的队列长度是50,以accept()方法接收客户的连接。客户端则直接以服务器的地址和监听端口为参数实例化Socket类,连接服务器,缺省的连接方式是stream socket。服务器端和客户端调用getInputStream()和getOutputStream()方法得到输入/输出流。

(2)多线程,对象池技术

Java语言的一个显著特点就是多线程编程技术,它能将程序任务分成几个并行的子任务。Java中实现多线程的类一般有两种方法:一是扩展java.lang.Thread类,用它覆盖Thread类的run方法。二是生成实现java.lang.Runnable接口的类并将其它的实例与java.lang.Thread实例相关联。

如果一种类型的对象需要经常被创建、销毁,为了提高性能,我们通常需要使用“池”技术,就如线程池、TCP连接池等一样。对象池技术基本原理有两个重要方面:缓存和共享。即在使用完那些被频繁使用的对象后,不立即将它们释放,而是将它们象池水一样缓存起来,以供后续的应用程序重复使用达到资源共享。对象池技术有效降低了创建对象和释放对象的次数,降低内耗,进而改善了应用程序的性能。实际上,对象池技术对缓存对象的数量是有一定限制的,对于数量的适当控制,有效地减少了应用程序内存上的开销,节约了空间。

依据对象池技术的特性,如果能合理的使用此技术,则应用程序的性能就会得到明显的提升。目前,对象池技术在服务器开发上很受青睐。在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分。尽管对象池技术有诸多优点,但需要提醒人们注意的是:对象池技术并不是对任何对象都适用。因为对象池本身的操作要耗费一些资源,对于一些小对象来说,

18

四川大学工程硕士学位论文 中小企业web邮件系统的设计与实现

使用对象池可能取得相反的效果。当重复生成某种对象的操作成为影响性能的关键因素时,一般就采用对象池技术。如果进行池化所能带来的性能只是稍微提高,一般不采用对象池化技术。所以说不同情况可能会选择对象池不同的实现方式。

(3)基于Spring JMS/ sun MQ消息机制

Spring 是一个开源框架,在创建之初的目的就是解决企业应用程序开发复杂性。它的最大的优点就是它的分层架构。Spring 提供的面向方面编程(AOP)和控制反转 (IOC) 插件式架构降低了应用组件之间的依赖性。

目前,存在的依赖注入类型有3种:基于设值(setter-based)方法、基于构建器(constructor-based)以及基于接口(interface-base)注入。Spring IoC支持前两种,即借助于Spring开发者可以通过构建器,或者设值方式创建对象,并对对象状态进行管理。

其中,依赖注入是Spring架构的基础。Spring在基于依赖注入的基础之上,同时还提供了其他大量的功能,比如事务管理框架、DAO支持、支持主流的O/R Mapping工具、支持各种标准J2EE组件技术的集成(JMS/JavaMail/EJB/Web服务等)、集成各种视图(Web视图和非Web视图)技术。这也是使用Spring IoC容器优于其他IoC容器的理由。

MQ是实现JMS开放标准的企业消息传递系统,也就是说它是JMS提供者。此外,Message Queue 还提供了大规模企业部署所需的互操作性、安全性、可伸缩性、可用性、易管理性以及其他功能。而像MQSeries则是全能的消息服务系统,可以支持多种编程语言同时进行操作。因此MQ更适合Java的运行环境,可以减少采购成本,另外MQ提供了一个免费的版本(平台版)可用于小型的应用环境。Sun Java? System Message Queue (Message Queue) 可以提供可靠的异步消息传送,能够将企业中的分布式应用程序和组件集成在一起。在不同平台和操作系统上运行的进程可以通过连接到该服务来彼此进行交互。利用jms发送的消息存放到mq消息队列中。有mq完成消息的发送。

(4)oscache缓存技术

OSCache标记库是一种JSP定制标记应用,具有开创性。虽然已经有一些供应商在提供各种形式的缓存产品,但是,它们都属于面向特定供应商的产品。在任何与JSP 1.2兼容的服务器上OSCache都能够正常运行,它不但能以用户为单位进行缓冲,还能为所有用户缓冲现有JSP代码块。

19

四川大学工程硕士学位论文 中小企业web邮件系统的设计与实现

4.1.3收发邮件的基础API

本邮件系统收发邮件的基础API是基于JavaMail API实现的。JavaMail API是一种能用来读写和发送电子消息的包。API可以划分成两个部分:分别是如何发送和接收独立于提供程序/协议的消息和使用特定的协议语言,如:SMTP、POP、IMAP。只有为JavaMail API提供协议,才能让其与服务器连接。

JavaMail需要Properties来创建一个session对象。Session 类定义了一个基本邮件会话(session),任何一个基于JavaMail的应用程序都有一个或多个session。通过这个session 其它类才能生效。

人们可以获得一个可被getDefaultInstance()方法共享的单一的默认会话或用getInstance()方法创建一个独特的会话:

private Session getSession(final MailProp mailProp) { }

Properties properties = System.getProperties();

properties.setProperty(\

properties.setProperty(\properties.setProperty(\properties.setProperty(\properties.setProperty(\

Session session = Session.getDefaultInstance(properties,new Authenticator(){

protected PasswordAuthentication getPasswordAuthentication() {

return }});

new

PasswordAuthentication(mailProp.getUserName(),

Integer.toString(sendTimeout));

mailProp.getPassWord());

return session;

4.2系统架构实现机制

如第三章所述,基于MVC设计模式,整个Web邮件系统的设计应用了业务逻辑层、表示层和数据服务层的三层结构,接下来对每一层的实现机制进行阐述,而涉及到具体的类以及调用过程则将在4.3节的“Web邮件系统功能实现”中进行描述。

表示层的功能主要是允许用户通过浏览器与邮件系统进行交互,发起请求并

20

四川大学工程硕士学位论文 中小企业web邮件系统的设计与实现

对处理结果进行展示。JSP页面提供给用户操作的界面,JavaBean和Servlet则用于JSP页面与业务逻辑层中的Tomcat和James之间的逻辑控制。邮件系统中的每个功能模块,例如登录、发送邮件等,在表示层中均由JSP页面、Servlet和JavaBean组成。用户在JSP页面(包含主页面和data页面)上进行了具体的操作,Servlet作为控制器把从JSP页面上传来的页面请求和数据交由后台的业务逻辑层进行处理,然后将数据通过set()方法存入JavaBean,同时页面跳转到用户能够读取数据的页面。

业务逻辑处理是业务逻辑层的主要工作,需要提供给表现层中各个邮件系统的接口。例如在表现层中的用户登录页面把用户名和密码输入后,通过业务逻辑接口交给业务逻辑层,然后再通过与数据库中存储的用户名和密码进行核对,将匹配结果返回给业务层。业务逻辑层主要由邮件服务器(James)、webMail应用程序和Web服务器(Tomcat)共同组成。webMail应用程序由J2EE JavaMail实现,部署在Apache Tomcat应用服务器中,它的功能是对邮件的管理、发送、接受,作为整个系统的指挥中心,不但要响应前台JSP页面提交的请求,而且还要和James进行交互。邮件服务器James用来传送、递送、转发邮件等。webMail应用程序通过与James服务器建立Socket连接,用I/O流的形式调用James命令来与James邮件服务器之间进行交互。

数据层主要用来存储James邮件服务器中的数据信息。James与数据库之间通过JDBC进行交互。本系统利用Mysql对相关信息和数据进行管理。基于Mysql,本文构建了Mail数据库,其中核心的表有:

(1)TK_preferences(用户参数表) (2)TK_users(用户基本信息表) (3)TK_userfolder(用户文件夹信息表) (4)TK_userroles(用户角色对照表) (5)TK_contacts(联系人信息表) (6)TK_contacts_group(联系人分组表) (7)TK_role(角色信息表) (8)TK_inbox(邮件信息表) (9)TK_spool(邮件处理池)

(10)TK_filterrules(邮件过滤配置表) (11)TK_attachment(邮件附件信息表) 它们的列表清单如下。

21

四川大学工程硕士学位论文 中小企业web邮件系统的设计与实现

标识 实名 回复邮件地址 保存到废件箱 只读 空废件箱 保存到发件箱 日期排序 排序方式 rpp 添加签名 签名信息 时区 显示图片 编辑器模式 刷新时间 用户标识

名称 标识 用户名称 用户密码 密码算法 使用转寄 转寄目标 使用别名 别名 帐号未到期 帐号未锁定 认证未到期 启用

表4-1 用户参数表列清单 名称 代码 id realName replyTo saveToTrash stOnlyRead emptyTrash saveToSent sortBy sortOrder rpp addSig signature timezone displayImages editorMode refreshTime userid 表4-2 用户基本信息表列清单

代码 id username pwdHash pwdAlgorithm useForwarding forwardDestination useAlias alias accountNonExpired accountNonLocked credentialsNonExpired enabled

表4-3 用户文件夹信息表列清单 名称 代码 id foldername pid 标识 文件夹名称 上级文件夹标识 22


中小企业web邮件系统的设计与实现(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江苏电信设施建设和保护办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: