转贴:利用EJB创建CRM系统
利用EJB创建CRM系统林建刚、聂旭琰、薛瑛
本文主要是利用EJB(Enterprise JavaBean)技术来开发一个CRM系统,整个系统应用J2EE构架,以IBM Websphere Application Server作为应用服务器来进行开发的。本文将介绍整个系统的构架以及整个系统中EJB的分析设计和实现。
系统结构
本系统运用了当今流行的J2EE构架,将整个CRM系统分成四层,即客户层、Web层、EJB层和数据层。其中EJB层主要处理系统的业务逻辑,系统运用Session facade设计模式即利用Session Bean包装所有Entity Bean,来负责调用Entity Bean的方法,客户端只允许与Session Bean交互,这样可以缩短系统响应时间,减少资源利用。Entity Bean用来代表数据库中的数据,所有对Entity Bean的操作都代表了底层数据库中数据的变动,EntityBean与数据库的同步过程由容器来管理。Session Bean用来处理业务逻辑和工作流,是客户端工作的抽象。由Web层来处理企业的表示逻辑,用来处理与EJB层和客户端之间的交互,包括接收、响应客户端的请求,并向EJB层发出请求,接收它的响应结果。
系统以IBM VasualAge for Java作为开发工具,以IBM DB2作为后台数据库,利用IBM Websphere Application Server作为应用服务器。下图就是整个系统的结构图。
客户层(Client Tier):包括浏览器、笔记本等客户端。
Web层(Web Tier):使用JSP(Java Server Pages)来开发业务逻辑。
业务层(也叫EJB层):WebServer / AppServer,使用IBM HTTP Server 作为HTTP Server,IBM Websphere Server作为应用服务器。
数据层(Data Tier):使用IBM DB2存储企业数据。
EJB设计
下面,我们将详细介绍系统中所需的实体EJB与会话Bean的功能。
实体EJB设计
使用了EJB的实体Bean类型,所有的数据都封装到实体EJB中,因此数据库设计就成了EJB的设计。对应于上面的数据库设计,这里可以抽象出来以下数据实体:
SystemManagerEJB:主要用来描述整个系统的管理员信息的实体Bean;
CustomerEJB:主要用来描述整个系统的客户信息的实体Bean;
ContactEJB:主要用来描述与客户接触洽谈的有关信息的相关资料的实体Bean;
CustomerServiceEJB:主要用来描述企业对客户提供服务的相关信息的实体Bean;
ProductPurchaseEJB:主要用来描述客户向企业购买产品的有关信息的实体Bean;
ProdutCheckoutEJB:主要用来描述客户向企业购买产品后,企业的产品出库的相关信息的实体Bean;
ProductStorageEJB:主要用来企业向销售厂家购买产品后,产品入库的相关信息的实体Bean。
会话Bean设计
会话Bean(Session Bean)主要完成一些逻辑处理,包括以下会话Bean :
FacadeEJB:主要用来封装所有实体Bean;
StatProductEJB:主要是用来统计库存产品的会话Bean;
StatCustomerEJB:主要是用来统计客户信息的会话Bean。
程序示例
下面,笔者以CustomerEJB为例,简述程序的开发过程:
编写Home接口
Home接口是用来创建、定位和删除对象的,每个实体Bean都有自己的Home接口。下面的代码包含了CustomerHome接口的具体代码:
import java.rmi.;
import javax.ejb.;
import java.util.;
public interface CustomerHome extends EJBHome {
public Customer create(
String customerName,
String customerPassword,
String customerSex,
String customerDepartment,
String customerInfo)
throws RemoteException,CreateException;
public Customer findByPrimaryKey(String primaryKey)
throws RemoteException,FinderException;
public Collection findAll() throws RemoteException, FinderException;
……
}
编写Remote接口
远程接口定义了客户端和Bean交互使用的商务方法。下面的代码显示了Customer接口的定义。
import java.rmi.;
import javax.ejb.;
public interface Customer extends EJBObject {
String getCustomerName() throws RemoteException;
void setCustomerName(String customerName) throws RemoteException;
……
}
编写Bean类
开发任何Bean都要以它的远程接口作向导。远程接口中定义的商务方法必须复制到Bean类中。在一个CMP中,Bean类必须有与Home接口中的创建方法对应的方法.最后还必须实现javax.ejb.EntityBean接口中定义的回调方法。下面是CustomerBean类的代码示例:
import java.rmi.;
import javax.ejb.;
public abstract class UserinfoBean implements EntityBean {
EntityContext entityContext;
String customerName;
……
public Customer ejbcreate(
String customerName,
String customerPassword,
String customerSex,
String customerDepartment,
String customerInfo)
throws RemoteException,CreateException {
this.customerName = customerName;
……
}
public void ejbRemove()
throws RemoveException {
}
…… //其他回调方法
public String getCustomerName(){
return customerName;
}
…… //其他商务方法
}
在会话Bean中包装实体
在FacadeEJB中包装实体Bean,以便客户端调用。
下面代码演示了如何在会话Bean的一个商务方法中包装实体Bean:
public Collection getAllRecords(){
Vector vectUserInfos = new Vector();
try {
Context ctx = new InitialContext();
Object ref = ctx.lookup("CustomerHome");
CustomerHome customerHome = (CustomerHome) PortableRemoteObject.narrow(ref, CustomerHome.class);
Collection collection = customerHome.findAll();
Return collection;
} catch(Exception e) {
e.printStackTrace();
}
}
最后,我们只要在JSP页面中调用整个Customer的数据资料即可。完成其他的设计工作后,一个用EJB技术开发的CRM系统就初具规模了。
↓相关文章:
- · 企业JavaBeansTM技术介绍 -- 献给不知道EJB为何物的兄弟们
- · 建立ejb各个接口和bean的文件
- · 自己写的玩的东西,通过网络建立一个ejb的框架,并进行weblogic的部署
- · 为什么用ejb?(ejb使用的经典分析,摘)
- · 网友杂谈各种APP SERVER(昨天讨论的总结)
- · EJB核心技术及其应用(转自china-pub,不错的文章)
- · EJB核心技术及其应用(续)
- · Resin服务器的使用(一篇不错的文章,如果想使用resin做服务器建议看看)
- · J2EE or J2SE? JNDI works with both(from javaworld)
- · 走向J2EE,漫长的道路(
- · Jbuilder6+weblogic6.1开发Entity Bean 全攻略
- · 一点经验:apache、tomcat服务的手工安装与卸下
- · 使用weblogic+jb开发配置说明
- · Weblogic 调试手记:Weblogic中使用Servlet
- · Tomcat 4中的ClassLoader
- · WEBLOGIC6.0的一些使用经验(转载)
- · Weblogic6.0部署和配置WEB应用程序(2)
- · Tomcat4的数据库连接池配置〔转贴csdn〕
- · JSP/JAVABEAN+TOMCAT4.0.5+MYSQL组合建站总结
- · weblogic的jsp问题解决方法(转)
- · WebLogic的安装和配置
- · weblogic:Roadmap for Creating a New Domain 好不容易整理出来:]
- · J2ME手机程序开发中的九大注意要点
- · J2ME程序开发全方位基础讲解汇总
- · J2ME游戏开发学习之高效漂亮显示积分
- · J2ME 实现可伸展目录树TreeList
- · Nokia的J2ME扩展API——UI API使用之DeviceControl类
- · 使用J2ME技术实现简单的动画(附代码实现)
- · 在J2ME中实现游戏功能选择界面(附源代码)
- · 如何使用J2ME中的线程
- · J2ME技术入门之一——J2ME程序的开发过程
- · 有关Motorola J2ME开发的几个细节问题
- · 在J2ME手机编程中使用字体
- · J2ME潜艇大战游戏设计与实现
- · J2me开发心得-数组的使用
- · J2ME中随机数字处理全攻略
- · 我的J2ME编程练习(5)——Canvas
- · J2ME中的时间处理全攻略
- · 我的J2ME编程联系(1)——List
- · 谈谈J2ME的跨平台性
- · J2ME播放声音的几个问题(nokia).
- · J2ME学习——使用OTA来发布你的程序
- · J2ME开发环境搭建 之 Sun WTK
- · J2ME学习笔记_2_HelloWorld程序详解
- · MVC模式在j2me项目中的应用(一)

