《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > Java Mail System和电子商务的集成

Java Mail System和电子商务的集成

2009-01-08
作者:邢云

引 言 

    对于电子商务网站的用户来说,他们需要的是一个稳定,美观的购物环境,和一个设计良好的购物流程。但是在线购买之余,用户们也需要一些交流和反馈,这就需要留言簿,论坛,电邮等一些模块同样设置在网站中。但是这些模块大多在网站中分散设计,用户使用起来很不方便,对于后台管理来说,分散而非集中的电子商务模块是耗费成本的。本文集中讲述了其中的一个模块:电邮部分如何与电子商务集成。它的设计模式,同样可以适用于其他各个模块。 

程序功能模块和分化 

    Java Mail System包含了如下三个部分: 

(1)类似于Outlook的客户端软件Java Mail Box,允许用户在当前系统中配置其他网站的电邮,包括发送邮件,接收邮件,包括图片,HTML文档,附件的处理。 

(2)服务器端的电邮Java Mail Web Service,使用JavaMail构建了一个SMTP,IMAP的服务器(或者是POP3,协议可以更改)。电子商务网站中的用户在注册成功的同时,就拥有了该系统的一个帐号,无需再配置,可以收发邮件一些操作,对服务器的文件夹进行常规操作。 

(3)与电子商务的集成:Tomcat的JNDI解决方案,实现了电子商务系统和Java mail system的连接,当用户的注册信息,和其他在电子商务网站中的信息用JDBC写入数据库后,JNDI指向了共同的CONNECTING POOL,这些,一方面通过修改TOMCAT的配置文件,令一方面,JSP的页面元素中,指明JNDI 

Java Mail System: Java Mail Box 

    运用面向对象的原理,将程序分为显示模块,逻辑模块,和各个显示间的通信。用户名,密码,SMTP服务器等等用户信息,用Java Bean描述。它和电子商务的集成,主要是让用户方便的调出这个邮件工具,来配置在其他网站上的电邮,点击连接即显示面板。 

    Java Mail Box当中用了18个类,网页中的APPLET标记需要引用包派生自JApplet的CLASS文件: 

    当浏览器读到此行时,它会创建到一个连接WEB服务器来提取CLASS文件,内嵌与浏览器中的JAVA解释器的类加载器接着从该文件中加载CLASS文件,加载过程中,类加载器必须解析此类中使用的其他类,这样,类加载器才会知道它需要加载更多的类才会运行该APPLET,因此,浏览器就会创建到该服务器的另外的连接来提取这些类,通常要耗费几分钟的时间。打包成JAR文件,可以使用另一个HTTP请求下载。JAR包括了JAVA MAIL BOX所需要的所有图形,类,属性文件,减少了下载的,时间。然后从APPLET调用 在JSP中指向APPLET,就实现了JAVA MAIL BOX的集成。

Java Mail System: Java Mail Web Service

    Java Mail Web Service的设计结构,取决于电子商务如何实现。这里,两者采用的都是一个经典的MVC。即:Java Bean 做逻辑,JSP做显示层,Servlet做Controller,同样,还是用BEAN封装了用户的信息,由于JSP的容器使用了Apache的Tomcat,这个电邮服务器可看作一个3层结构,如图: 

图一:电子邮件服务器的3层结构 

集成:JNDI方面 

【Naming Service的查询模型】

图二:Naming Service 的查询模型 

    可以看到,对于一个Client来说,一个Naming Service 提供了对于一个对象(Object)到名字(Name)的绑定和查询(Binding and Lookup),以提供对于资源的访问,就是说,对于一个程序,访问这个Name就等于访问了其绑定的Object 

JNDI(Java Naming and Directory interface)是JAVA提供的命名服务解决方案,它的灵魂是Context接口,并且用 SubContext和InitialContext来辅助。

【Tomcat中的JNDI配置】 

    Tomcat中,指明JNDI,需要对两个文件作出修改,并且要确定做到参数一致:系统服务器配置文件SERVER.XML和应用描述文件WEB.XML,描述如下: 

           JNDI名字 

                    type="javax.mail.Session"/>    ——>JNDI所属类名 

集成:JDBC连接缓冲池方面 

    在DATASOURCE中事先建立了多个数据库连接,这些数据库保存到连接池(CONNECT POOL)中,JAVA程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接,当程序访问数据库结束,再将数据库连接放回到连接池,这样可以提高访问数据库的效率,如果WEB 应用每一次都接收到用户的客户请求,都和数据库建立一个连接,数据库操作结束就断开连接,这样会耗费大量的时间和资源,因为数据库每一次配置链接都要将CONNECTION对象加载到内存中,再验证用户名和密码。 

    例如,当一个电子商务网站的用户进行操作的时候,下订单,提交(Commit),撤销(DrawBack)涉及到一个状态BEAN的HASHMAP的清空和添加。用户的在线时间是10多分钟左右,而实际操作数据库的连接时间,是微秒级的。显然,必须要用到连接池技术。  

集成:JNDI,JDBC共同放置实现 

DataSource对象是由TOMCAT提供的,因此不能在程序中采用创建一个实例的方式来生成DataSource对象,而需要JNDI,来获得DataSource的应用 

图三:在JNDI和JDBC的共同放置下,实现了一个用户和数据库的访问

【程序中InitialContext()的应用】 

Context ctx = new InitialContext(); 

if(ctx == null )  throw new Exception("No Context"); 

Session mailsession =(Session)ctx.lookup("java:comp/env/mail/session"); 

结束语 

    采用了JAVA MAIL API后,电子商务网站的设计模式,直接影响着Java Mail System 的实现。有时候,需要访问SQL ,Oracle,Cloudscape不同的数据库,就需要运用DAO和工厂模式来设计一致接口,同理可以设想,将一个通用的模式来实现Java Mail System和电子商务的连接,其意义在于,为其他的模块连接提供了一个模板。有了这些辅助功能,一个电子商务功能才更丰富,自身也更有吸引力。 

参考文献: 

1《JAVA2 核心技术》  卷Ⅰ原理                 机械工业出版社         2002年2月 

2《JAVA2核心技术》   卷Ⅱ高级特性             机械工业出版社         2002年4月 

3 《JSP应用开发详解(第二版)》飞思科技产品研发中心  电子工业出版社   2004年3月 

4《JSP应用开发详解(第二版)》 飞思科技产品研发中心  电子工业出版社   2004年3月 

5《J2EE企业级应用开发》飞思科技产品研发中心         电子工业出版社   2003年8月 

6《Tomcat与Java Web开发技术详解》飞思科技产品研发中心 电子工业出版社2004年4月 

7《Mastering JSP》             Todd Cook         SYBEX                2003年3月 

8《VC++ SMTP协议电子邮件传送剖析》 朗锐   01空间                2003年9月12日 

9《JavaMail操作的总结》土人制造编程园地JAVA讨论区 the_east_key 2004年4月15日 

10《用JAVA开发EMAIL工具之接收邮件》冯睿    UML软件工程组织   2002年12月20日 

11《用JAVA MAIL API编写可带附件的邮件程序》   邢雅莉   赛迪网  2001年9月11日 

12《Cloudscape和Websphere Application Server:使用核心JDBC API》 Bennett Falt 

  IBM Data Management Group   http://www.developworks.ibm.com 

13《创建J2EE中的邮件发送和接收程序》   苏洋            赛迪网   2002年9月4日 

14《JAVA的网络编程,用JAVA实现SMTP服务器》谷和启   赛迪网   2003年3月21日  

15《JNDI overview, Part 1: An introduction to naming services》       java one 

16JNDI Documentation                         http://www.java.sun.com/products/doc.html 17JAVA MAIL API Online 

 http://java.sun.com 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。