??xml version="1.0" encoding="utf-8" standalone="yes"?> 三、系l设计和实现
一、系l结构的选择
1?传统两层C/Sl构的缺?BR>
传统的两层客?服务器模式比较适合于小规模、用戯、单一数据库且在安全、快速的|络环境?(例如局域网 )q行 。但是,随着应用pȝ的规模不断扩?,复杂性越来越高在多用戗多数据库且非安全的|络环境?例如:Internet) ,q种两层l构的应用模型将无法适应 。而且传统的两层结构还存在以下~陷Q?BR>
(1)它是单一服务器且以局域网Z心的 ,所以难以扩展至大型企业q域|或 IntranetQ?BR>
(2)受限于供应商Q程序的升l护必须׃应商重新开发扩展;
(3)软、硬件的l合及集成能力有限;在Y件上呈现客户端,用户必须在客L安装特定的客L应用E序Q而且企业的业务逻辑都写在客L应用E序中,E序l护困难Q程序升U需要每个客L都要安装新的客户端应用程序,同时Q对于程序开发商来说Q程序模块的重用性差Q各个模块相对独立;
(4)C/S模式很难理大量的客h?BR>
Z以上原因Q传l的C/S模式已经不能适应发展的需要,随着|络技术的普及和用户需求的q一步提高,三层WEB模式应运而生?BR>
2?三层WEBl构的优?BR>
三层客户/服务器模?(以下UC层模?)在两层模式的基础上,增加了新的一U。这U模式在逻辑上将应用功能分ؓ三层Q客hC层、业务逻辑层、数据层。客hC层是ؓ客户提供应用服务的图形界面,有助于用L解和高效的定位应用服务。业务逻辑层位于显C层和数据层之间Q专门ؓ实现企业的业务逻辑提供了一个明的层次Q在q个层次装了与pȝ兌的应用模型,q把用户表示层和数据库代码分开 。这个层ơ提供客户应用程序和数据服务之间的联p,主要功能是执行应用策略和装应用模式Qƈ封装的模式呈现l客户应用程序。数据层是三层模式中最底层Q他用来定义、维护、访问和更新数据q管理和满应用服务Ҏ据的h?BR>
三层模式的主要优点ؓ Q?BR>
①良好的灉|性和可扩展性。对于环境和应用条gl常变动的情况,只要对应用层实施相应的改变,p够达到目的?BR>
②可׃n性。单个应用服务器可以为处于不同^台的客户应用E序提供服务Q在很大E度上节省了开发时间和资金投入Q?BR>
③较好的安全性。在q种l构中,客户应用E序不能直接讉K数据Q应用服务器不仅可控制哪些数据被改变和被讉KQ而且q可控制数据的改变和讉K方式 ?BR>
④增Z企业对象的重复可用性。“企业对象”是指封装了企业逻辑E序代码Q能够执行特定功能的对象。随着lg技术的发展Q这U可重用的组件模式越来越Y件开发所接受?BR>
⑤三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、g展性和执行校率?BR>
⑥三层模式可以将服务集中在一L理,l一服务于客LQ从而具备了良好的容错能力和负蝲q能力?BR>
三层体系l构
电信计划理信息pȝ是由省电信公司对下属地市电信公司q行l一理Q所有业务逻辑都集中在省公司管理和制定Q地市公司负责数据的录入和查询统计,用户的分布广泛,数据集中处理Q因此在设计时充分考虑各种体系l构的优~点Q选择三层WEB模式q行开发实现?BR>
二、体pL构的选择
1?DCOM分布式技术和CORBA分布式技?BR>
Microsoft的分布式COMQDCOMQ技术是组建对象模型技术COM大大q行了扩展,是对在局域网、广域网甚至是Internet上计机对象之间的通信提供了完全的支持。通过使用DCOM用户的应用程序就可以在Q何网l位|上辑ֈ真正的分布性,从而满_户应用的需要。整体结构如下图所C:
由OMG提出的公共对象请求代理结构CORBA对象是目前比较流行的一U中间g规范Q也是一U构件实现规范,主要目标是对象在分布式环境中可重用、可UL和可互操作,CORBA的整体结构如下图所C:
以上两种分布式结构可以实现在l一特定的环境下的应用,对于局域网中的实现比较行Q但是针对不同^台的应用和Internet上的应用Q二者缺灵zL?BR>
2?J2EE体系l构介绍
J2EE体系l构分ؓ三个层次Q分别是客户表示层、中间逻辑层和数据理层及应用pȝ。本l构h跨^台的Ҏ,l构中的三个层次可以处于不同的^Cq行协作应用Q因为客戯C层可以使用不同的客LE序Q因此具有很好的分布性,可以适应分布式管理的要求Q在后台的应用系l集成中Q可以把企业不同的应用系l集成到该结构中Q因此可以有效的保护现有的资源不被破坏。基于J2EE来实现的WEB服务的核心框架如下图所C:
用基于J2EE的体pȝ构开发的WEB服务q具有以下的优点Q?BR>
?可以跨越中间防火墙进行通信。因为WEB服务是利用HTTP最Z输媒介,中间层用WEB服务的话Q可以从客户界面直接调用中间层组Ӟ而不必徏立页面?BR>
?应用pȝ的集成。要把企业里不同语言写成的,q行于不同^C的各U程序集成v来必然会p很大的开发力量。通过WEB服务可以使用标准的方法把功能和数据暴露出来,供其他程序用?BR>
?所有的企业逻辑和服务都集成装在可重用、可UL的EJBlg中,因此pȝl护性和可重用性好?BR>
④中间g代码可以集中在处理业务逻辑上,无需考虑数据表示?BR>
因ؓ本次电信计划理信息pȝ的业务逻辑和数据处理规则都是由集团公司和省公司l一理Q数据和E序集中在统一的服务器上,q且服务器运行^C客户端的q行q_不同Q因此采用J2EE的框架结构解x较合适?/FONT>
通过对各U解x案和框架l构的比较,选择JAVA技术作为本ơ系l设计的应用技术,我们对系l的设计如下Q?BR>
前台用户昄层用jsp和servlet在浏览器上实玎ͼ中间使用EJBlg实现企业业务逻辑Q后台数据库使用Sybase数据库。具体的企业应用l构如下所C:
其中中间件用Bea公司的Weblogic7.0Q开发工具用JBuilder9.0Q数据库使用SYBASE数据库?BR>
在用L录过E中Q因为在整个客户端用的用户比较多,因此在连接上我们使用q接池进行处理。具体的q接池实现如下:
class DBConnectionPool
{
public DBConnectionPool(String name, String URL, String user, String password)
{
this.name = name;
this.URL = URL;
this.user = user;
this.password = password;
this.maxConn = maxConn;
}
private void createPools(Properties props)
{
private Hashtable pools = new Hashtable();
String poolName = props.getProperty("poolname").trim();
String url = props.getProperty(poolName+".url").trim();
String user = props.getProperty(poolName + ".user");
String password = props.getProperty(poolName + ".password");
String maxconn = props.getProperty(poolName + ".maxconn", "0");
int max;
DBConnectionPool pool=New DBConnectionPool(poolName, url, user, password);
Utility.log(pool.toString());
pools.put(poolName, pool);
Utility.log("成功创徏q接? + poolName);
}
}
Z使用SessionBeanq行d认处理Q同时利用Bean的监听功能对用户的登录时间进行监听,过一定时_自动切断用户dq接Q让用户q行重新d。在应用pȝ中,用户d后的权限控制是一个重点,我们在用J2EE框架l构的过E中Q用SERVLET的过滤功能来实现权限的控Ӟ具体的实现结构如下:
qo器的定义标记如下Q?BR>
<web-app>
<filter>
<filter-name>IE Filter</filter-name>
<filter-class>com.ibm.devworks.filters.IEFilter</filter-class>
</filter>
</web-app?/FONT>
在业务逻辑处理上,我们对各个业务进行相应的分解Q然后针Ҏ个业务逻辑应用EJBlgq行实现。客户做求后Q用SERVLET处理后调用各个业务模块处理逻辑QEJBlg讉K数据库后处理后的结果集q回lSERVLETQ再汇集到客Lq行昄Q供用户q行查询和用?BR>
四、ȝ
本文提出的B/S模式的系l结构已应用电信计划理信息pȝ中,׃实际需要,在请求处理层中还增加了一个设备接口线E,用于通过SNMP协议获取|络讑֤的信息。与传统的CGI模式相比Q本pȝl构有明昄优势Q具有较高系l效率,其适合于构造功能复杂的Web应用pȝ。另外在实现上还可以加强Q比如进一步研I自动创建和撤销新的数据库操作线E的条g。?/FONT>
![]() ? |
![]() ? |
在图3中点?next"按钮Q?BR>
![]() ? |
在图4中选中"I accept the terms of the License Agreement"Q点?next"按钮Q?BR>
![]() ? |
选择安装jbuilder9的\径ؓF:\jbuilder9Q如?所C,点击"next"按钮Q?BR>
![]() ? |
在图6中选择"install"按钮Q开始jbuilder9的安装,如图7所C;
![]() ? |
![]() ? |
安装好后出现?的画面,点击"Done"按钮Q至此Borland jbuilder 9 Enterprise Trial版本安装q全部完成?BR>
![]() ? |
4、Jbuilder 9的启?BR>
1Q获得试用授权文件或者序列号
你需要在Borland|站上注册,获得一个trial license keyQ这h可合法地试用JBuilder9。这个key通过电子邮g发到用户注册时提供的信箱上,通常q个key是个文本文g而不是序列号Q称为activate fileQ可以试用JBuilder 9一个月(31?Q不q有时这个key不一定可用,可能需要上|寻扑法的key?BR>
2Q第一ơ启动JBuilder9
W一ơ启动JBuilder9Ӟ会出C个界面,要求提供JBuilder 9产品的serial number(序列?或者activate file(产品ȀzL?Q你应该选择activate fileQ然后根据提C选择activate file所在的目录和文件名。如果没有错误,JBuilder 9开始启动,会显C有多天的试用期Q然后出现JBuilder 9的界面?W一ơ启动JBuilder 9Ӟ会出现如?所C的界面Q提C界面中的文件类型是否由JBuilder9打开?BR>
![]() ? |
我们看到的最前面的是Tip of th eDay(每日一诀)H口Q每ơ启动时会显CZ用JBuilder 9的一个窍?tip)Q如果在Show tip of the day after launching前的Ҏ打勾Q那么以后启动JBuilder9Ӟ׃会出现Tip of the DayH口。单击Close按钮关闭Tip of the DayH口Q此时开始正式用JBuilder 9Q这时看到的界面中,JBuilder9会自动打开一个后~名ؓjpx的文件Welcome.jpxQ见屏幕左上部鼠标所指处Qjpx可能是java project(Java工程或者项?文g的羃写?BR>
希望大家最后安装联机手册jb9docs.zip和实例代码jb9samples.zipQ这对于通过手册辅助学习JBuilder9是必ȝ?/FONT>
三、Jbuilder 9集成开发环境简?/B>
![]() ?0 |
从上?0中我们可以看出,JBuilder9的集成开发环境是一个用单一H口界面Q集~辑、管理文件与工程、可视界面设计、浏览、编译、调试和其他操作{多功能于一体的开发^台。以下是各个部分的名U及其功能说明?BR>
1、主菜单?main menu)
主菜单对于编写程序来说是非常重要的,比如用户可以用它打开、保存工E和文gQ装载存储的文gQ在文g之中查找文本Q编译和调试E序{?BR>
2、主工具?main toolbar)
dh按照其功能划分成若干工hQ其上面的按钮主要提供对菜单命o的快捯问方式?BR>
3、工E窗?project pane)
工程H口可以昄所选工E的内容Q用于浏览与操作工程树?BR>
4、工E工h(Project bar)
工程工具栏包含了一个当前所打开工程的列表及一些按钮,q些按钮用来增加、删除文Ӟ关闭及更新工E窗口中的工E文件?BR>
5、结构窗?Structure pane)
l构H口用于昄内容H口中当前文件的l构。对一个Java文g而言Q该H口以树的Ş式显C出所有方法、属性与事g。结构窗口具有向下展开的功能,双击一个类或者界面就可以查看它的先c,非常便于用户查找相关信息?BR>
6、内容窗?Content pane)
在内容窗口中可以查看所打开的文件。每一个打开的文仉有一个显C其文g名的标签以及位于底部的各U视图标{?BR>
7、文件视图标{?Fileview tabs)
文g视图标签用于在内容窗口中切换文g的各U视图,如Source、Design、Bean、Doc 或History视图?BR>
8、文件标{?File tabs)
文g标签用于昄打开的文件名。JBuilder9只显C活动工E的文g标签。要查看一?打开的文Ӟ请选择它的文g标签。注意,当一个文件被修改Ӟ它标{上的XW号为断开的,否则为没有断开的XW号?BR>
9、状态栏(Status bar)
在状态栏可获得有兌E及其结果的最C息?BR>
以上各个部分是利用JBuilder~程时最怋用的Q掌握了它们的功能,׃对JBuilder 9的编E环境有更深入的了解?/FONT>
下面Q就对JBuilder9的集成开发环境中的各内容进行介l?BR>
一Q?菜单?BR>
JBuilder9的菜单栏是由一些子菜单l成的,用户可以通过鼠标或快捷键来选择需要的菜单V下面将对一些常用和比较重要的菜单项q行介绍?BR>
1、File(文g)菜单
1QNew菜单?BR>
单击File->New菜单,打开Object Gallery对话框,如图11所C?BR>
![]() ?1 |
在这个对话框中,用户可以创徏文g、工E、应用程序、Web应用、XML应用、CORBA、Build、Enterprise应用和测试处理等?BR>
在本对话框中?个标{,下面对一些主要标{中的主要工E进行简单的说明?BR>
·General标签Q用户可以通过General标签来创建多U类型的文gQ例如,要创建应用程序文Ӟ只需在相应的Application图标上双d可?BR>
·Proiect标签Q在Proiect标签中可以创建新的工E?BR>
·Web标签QWeb标签中,可以创徏和Web相关的应用程序和文g?BR>
·XML标签QXML标签中,可以创徏和XML相关的应用程序和文g?BR>
·CORBA标签QCORBA标签中,可以创徏和CORBA相关的多层次应用E序的服务器和客h的接口和应用?BR>
·Enterprise标签QEnterprise标签中,可以创徏和Enterprise应用相关的接口和应用对象Q这些功能只有企业版的JBuilder9才会有?BR>
·Build标签QBuild标签中,可以创徏用于生成代码和工E创E中使用的Q务?BR>
·Test标签Q在Test标签中,可以创徏用于试的应用框架和cd象?BR>
另外QObiect Gallery对话框中q包括Web Services以及Micro{标{,但是׃其应用范围不是很q,所以这里不再叙q。如有兴,可以参考相关的帮助信息?BR>
2QNow Project菜单?BR>
New Projiect菜单的主要功能是创Z个JBuilder工程文g。单击该菜单,出C个标准的创徏JBuilder工程文g的向导对话框Q按照向导的提示Q就可以创徏一个JBuilder工程文g了?BR>
3QNew Class菜单?BR>
New Class菜单主要用于创Z个Java class对象。单击该菜单,出C个标准的创徏Java class对象的向导对话框Q按照向导就可以创徏一个Javaclass对象文g?BR>
4QOpen Project菜单?BR>
Open Project菜单的功能是打开一个已有的工程。JBuilder9可以同时打开多个工程Q系l还可以打开多个AppBrowserQ显C多个不同的工程?BR>
5QOpen File菜单?BR>
本菜单项用于打开已经存在的JBuilder文g、JBuilder工程文g、JBuilder包、C和C++文g、SQL文g、HTML文g、批处理文g、文本文件和cd文g{,该命令的快捷键是Ctrl+O。单击该菜单,出C个标准的打开文g对话框,通过q个对话框,可以选择不同路径下的文g。如果文件是一个工E文Ӟ在集成开发环境中打开工程。如果是其他文gQ可以在代码~辑器中查看文gq编辑它。不同类型的文g可以用文件过滤器q行qo?BR>
6QReopen菜单?BR>
Reopen菜单用来打开最q用的工程或模块。JBuilder 9Ҏq打开q的工程文gh记忆功能Q当单击该菜单时Q会出现其联菜单,其中列出了最q打开q的文g?BR>
7QClose All Except "Frame1.java"菜单?BR>
此菜单项的主要功能是关闭当前集成开发环境中打开的工E文件中除了正在使用的Java文g以外所有其他的文gQ如果要关闭的文件有了变_会出现一个对话框Q提C是否保存所做的修改?BR>
8QRevert"Frame1.java"菜单?BR>
此菜单项用来q原当前集成开发环境中打开的Java文g。如果当前文件有了变_才会有还原ؓ修改前的文g的操作,该菜单项才会被激zR?BR>
9QPage Layout菜单?BR>
此菜单项的主要功能就是对打印代码q行面讄。单击该菜单会打开一个页面设|对话框Q用于修Ҏ印时的各U参数设|?/FONT>
2?Edit(~辑)菜单
"~辑"菜单的主要功能是用来理处于用户设计阶段的文本和控g?BR>
3、View(视图)菜单
视图"菜单的主要功能是军_在当前的IDEH口昄哪些内容。在该菜单中的菜单项是用h据自q需要与爱好调整~程环境的重要工兗在"视图"菜单中提供了很多重要的工P比如ToolBars(工具?、Project(工程H口)、Content(内容H口)、Structure(l构H口)、Messages(消息H口)、StatusBar(状态栏)和HideAll(隐藏所有的H口){等?其中Q用ToolBars可以选择需要显C的工具栏,主要有FileQEditingQSearchQBuildQRun/DebugQNavigation和Help{等?BR>
4 、Project(工程)菜单
?工程"菜单中,JBuilder提供了一pd用于工程处理的菜单项Q主要包括:
Q?Make Proiect 菜单可以将当前工程中的所有文件进行编译和链接Q?BR>
Q?Rebuild Proiect 菜单可以将当前工程的所有文件进行重新编译和链接Q?BR>
Q?Make 菜单可以将当前工程文gq行~译Q?BR>
Q?Rebuild 菜单可以将当前工程文gq行重新~译和链接;
Q?Add Files/Packages 菜单可向当前工E添加文件和包;
Q?New Folder 菜单用于在当前的工E中d新的文g夹;
Q?Remove from Proiect 菜单用于从当前的工E中U除文gQ?BR>
Q?Refresh 菜单用于刷新当前工E窗口的内容Q?BR>
Q?Rename 菜单用于给当前工程中的文g重命名;
Q?Proiect Properties 菜单用于设|当前工E的属性;
Q?Default Proiect Properties 菜单用于设|系l默认的工程的属性?BR>
在上面讲q的菜单中QMake ProjiectQRebuild ProjectQMake和Rebuild{菜单项都是l常使用的工E菜单项?BR>
5、Run(q行)菜单
"q行"菜单提供了各U运行和调试的菜单项。用L怼使用到这些菜单项Q这些菜单项在运行程序和调试E序时特别重要。下面就单介l其中的菜单V?BR>
Run Proiect(q行工程)菜单和Debug project(调试工程)菜单Ҏq行E序必不可少的,主要用于q行工程和调试工E?BR>
Configurations(配置)菜单可以打开Prpject Properties对话框ƈ以Run面昄Q让用户选择要运行的ȝ?q和Java中有ApplicationE序和Applet应用程序有??BR>
Step Over(单步)菜单和Run to Cursor(q行到光标处)菜单则和调试程序有养I卛_步执行和执行到光标?BR>
对于Add Watch(d观测变量)和Add BreakPoint(d断点){菜单项的用以及其他的调试技巧?BR>
6、Team(团队)菜单
"团队"菜单主要用于完成团队的开发协调工作。其中的Select Project VCS菜单主要给工程配置用于团队开发的版本控制pȝQ单击该菜单将弹出Select Project VCS对话框?BR>
7、Wizards(向导)菜单
"向导"菜单提供了一pd用于向导的菜单项?BR>
·Implement Interface菜单主要用于打开一个可以创建可执行框架接口的向|当JBuilder创徏好框架接口后Q就需要给接口下可执行Ҏ的实际代码?BR>
·Override Methods菜单主要用来打开一个用于重载类Ҏ的向对{?BR>
·EJB菜单主要用于处理EJB斚w的向|其中包括三个子菜单项Q分别ؓEJB1.x Interface GeneratorQEJB1.x Bean Generator和Use EJB Test Client?BR>
·Use DataModule菜单主要用于打开一个DataModule的向|能够选择的数据模块只有那些已l徏立ƈ~译通过的数据模块,用户可以通过该向导选择一个已l存在的数据模块q把它加入自q工程中?BR>
·Use CORBA Interface 菜单主要用来打开一个CORBA Client Interface Object From IDL向导Q从一个IDL文g中生成CORBA客户?BR>
·Resource Strings菜单主要用于打开Resource Strings向导Q将资源l定C些单独的cM?BR>
·Archive Builder菜单主要是开发完成后的应用程序进行分发。Archive Builder可以攉E序所需的所有文Ӟ依照选择了的归档cdq行分发Q例如,q些文g可归档ؓJAR文gq行分发。该菜单命o和new向导中的Archive Builder的作用是一L?BR>
·Native Executable Builder菜单主要是开发完完成后的应用E序q行本地可执行代码分发处理。JBuilder9可生成在WindowsQLinuxQSolaris和Mac OS X{多个操作系l^C使用的本C码。该菜单将打开一个等同于new向导中的Native Executable Builder向导?BR>
·Javadoc菜单主要是打开Javadoc向导Q它可以为各UAPI源文件创建HTML格式的文档文件?BR>
·External Build Task菜单主要是打开External Build Task向导Q用于创Z个在~译链接工程时用的扩展BuilddE序?BR>
8、Tools(工具)菜单
"工具"菜单主要提供各种环境的选项Q用户可以自定义q些选项Q设|适合自己的编E环境。其中主要包括IDE Options(环境选项)、Editor Options(~辑器选项)、Configure Libraries(cd配置选项)QConfigure Servers(分发应用的服务器端配|?、Configure Palette(配置选项?和Configure JDKs(JDKd和配|?{菜单项?BR>
另外Q还提供了Enterprise SetupQEnterprise DeploymentQCreate EJB Client JARQBeanlnsight和Package Migration{与Borland Enterprise Server有关的配|工P以及JDBC MonitorQDatabasePilotQJDataStore Explorer和JDataStore Server{和数据库配|相关的工具?BR>
Configure ToolsQConfigure File Associations和RMIRegistry{菜单项则用于文件关联等其他对象的配|工作?/FONT>
二)???BR>
在Q何可视化~程中,控g栏是用户取用控g库中存在的控件的最一般工P也ؓE序设计提供了快捷和方便。在控g库中的每一个控件实际上是一个对象,用户可以增加和改q其功能Qƈ由此形成一个新的控件。另外,所形成的新控g可以被添加到控g库中Q?被程序所调用?BR>
单击上图10中文件视图标{中的Design选项Q在内容H口昄的内容ؓ用户界面设计器,它的上方׃出现"控g?Q控件栏位于主菜单的右下方,按控件功能的不同划分?4l?BR>
1、Swing?BR>
Swing是Java基础cd(JFC)的重要组成部分,它实C一l新的GUI(Graphics User InterfaceQ图形用L?控gQ具有可插接的外观感觉效?可插接的外观感觉效果是使用户只需要设计一个GUI控g集,可以自动得CLOSq_(如WindowsQSolarisQMacintosh)相吻合的外观感觉效果。Swing是以100%UJava实现的,且以JDK(Java DevelopmentKitQJava开发工具包)Lightweight UI(User InterfaceQ用L?框架为基?BR>
![]() ?2 |
在Swing控g中除了包含两个已有AWT(Abstract Window ToolkitQ抽象窗口工具包)控g?如按钮、滚动条、标{)的纯Java版本外,q添加了一个高U控件的全集(例如树视图、列表框{??BR>
2、Swing Containers?BR>
如图13所C,Swing Containers主要包含了一些Swing控g所需要用的容器外观{,以Swing控g的布局更合理?BR>
![]() ?3 |
3、DataExpress?BR>
DataExpress中所包含的控仉是Borland公司专ؓ数据库处理设计的Q如?4所C?BR>
![]() ?4 |
4、dbSwing和MoredbSwing?BR>
dbSwing?见图15)和More dbSwing同样也是Borland公司设计的在数据库处理方面的控g集合?BR>
![]() ?5 |
5、dbSwing Models?BR>
dbSwing Models同样也是Borland公司设计的在数据库处理方面的控g集合Q如?6所C?BR>
![]() ?6 |
6、EJB?BR>
EJB(Enterprise JavaBean)在企业的应用程序设计中非常有用Q是J2EE的重要组成部分。其包含的控件如?7所C?BR>
![]() ?7 |
7、AWT?BR>
AWT是Java基础cd的重要组成部分,是Java在较早期的窗口工具集Q具有十分强大的功能Q包括:
Q丰富的用户界面控gQ?BR>
Q强大的事g处理模型Q?BR>
Q图形和囑փ工具Q包括Ş状、颜色和字体c:
Q布局理器,可以q行灉|的窗口布局而与特定H口的尺寸和屏幕分L率无养I
Q数据传送类Q可以通过本地q_的剪贴板来进行剪切和_脓?BR>
AWT늚控g如图18所C?BR>
![]() ?8 |
另外Q还有XMLcInternetBeanscCORBAcMIDP和MIDP Screens{在JBuilder中所使用的高U编E功能控件。这里就不多说了?BR>
![]() ?9 |
(2)在Name(名称)文本框中Q输入exampleQ其他选项使用默认倹{?BR>
(3)单击Next按钮Q进入如?0所C的对话框?BR>
![]() ?0 |
(4)保持默认讄Q单击Next按钮Q进入如?1所C的对话框?BR>
![]() ?1 |
(5)在Title(标题)中输入ExampleQƈ输入相关的Description(描述)信息以及Author(作?{?BR>
(6)单击Finish(完成)按钮Q完成工E设|,JBuilder会自动生成工程example?BR>
2、用Application Wizard创徏应用E序
我们可以使用Application Wizard来创Z个Java应用E序Q具体步骤如下?BR>
(1)选择File->New菜单,出现Object Gallery对话框。如?2所C,该对话框提供了创建各U不同文件的向导?BR>
![]() ?2 |
(2)单击Application图标Q出现Application Wizard对话框,如图23所C,保持默认讄Q单击Next按钮Q进入应用程序向导的步骤2?BR>
![]() ?3 |
(3) 如图24所C,在Class(c?文本框中输入Frame1Q在Title文本框中输入Example?BR>
![]() ?4 |
(4)NCenter frame on screen复选框Q可以应用E序q行在屏q的中心位置Q单击Next按钮Q进入应用程序向导步?Q如?5所C?BR>
![]() ?5 |
(5)保持默认讄Q单击Finish按钮Q即完成Java应用E序的设|,pȝ会自动徏立example.java和Frame1.javaE序q添加到工程中,q会自动生成与该应用E序界面相对应的源程序?BR>
单击Frame1.java和example.java可以查看相应的源代码,如图26所C?BR>
![]() ?6 |
选择Run->Run Project菜单,或者按快捷键F9Q系l会q行应用E序。结果如?7所C?BR>
![]() ?7 |
J2EEQ作为开发mission-critical的企业应用的一整套规范的整合^台。其规范之多、内容之q,从而给开发J2EE应用带来了很多“麻烦”。比如,为实现内容的RDBMS存储Q我们可能的Ҏ有JDBC、Entity Beans、JDO、O/R Mapping工具QTopLink、HibernateQ、XML-DBMS、JAXB{方法(其中一些方法不是J2EE规范所包含的)。因此,为实现J2EE各层Q至有表示层、控制层、商业逻辑层等3层)以及层与层之间的耦合QJ2EEpȝ架构师需要考虑的问题会很多。加上,J2EE本n的快速发展,l架构、开发具有工业强度的J2EE应用带来一些难题?BR>同时QY件开发技术从来就没有“银弹”,所以J2EE技术也不是万能的。但是,如果我们在结合具体商业需求的基础上,合理的应用好J2EE技术,其结果可惌知。本文试探从自己以往的项目经验来探讨开发J2EE应用应该遵@的几点准入手,以v到抛砖引玉的作用。如果能辑ֈq一点要求,则万分激动?BR>本文l合JBoss 3.2.1下的J2EE应用开发ؓ例展开?BR>
1Q结合商业需求选择合理的架?BR>
如果q商业需求,而单独的讨论技术本w的优势是不够的。各Ҏ术都有生的特定背景Q其中很多都是来自工业需求而触动的。一般而言Q企业信息系l(EISQ都要求自己E_、安全、可靠、高效、便于维护。同Ӟ各个企业信息pȝ都有自己独特的要求,可能有些时候需要考虑与原有遗留系l的集成Q所以了解各个企业信息系l具体的商业需求对于整个系l的架构昑־很关键?BR>比如Q如果待开发的J2EE应用pȝ中用到的数据大部分来自于外在数据源Q而这些数据可能是通过JDBC直接从外在数据源导入到待开发的J2EEpȝ的Database中。对于这U情形,如果在开发过E中Q仅仅用JDBC来操作数据库Q对于小强度Qƈ发访问用户少、数据流量少Q的情ŞQ显然是比较合适的Q但如果Qƈ发访问用戯多、数据流量大Q对Database层用较为频J的情ŞQ则昑־有些力不从心。因此,对于q种需求,我们可以考虑采用Entity Beans with Caches。打个比方,在JBoss 3.2.1中对于Entity Beans的Cache{略有多U,q时可以考虑使用Q,即“Standard CMP 2.x EntityBean”,方式q用“D”类型的commit-option来保证Entity Beans的内容与数据源的同步Qƈ使得pȝ的性能得到大大改善Q同直接使用JDBC相比Q。其中,可以一些Entity Beans讄为read-onlyQ以改善性能?BR>当然Q在q里也可以采用其他一些O/R Mapping技术,比如TopLink?BR>再比如,考虑q样一U情形:如果待开发的企业信息pȝ使用到的数据都是ql本w生成和操作的,则徏议采用:CMP Entity Beans技术。Entity Beansl大家的印象很坏Q这可能与EJB 1.1l大家留下的坏映象有兛_。但是,EJB 2.0(或者说2.1)得到了很大的改善QLocal Interfaces、CMR、Read-Only、Session Façade模式lEntity Beans注入了活力。当Ӟq发用户多、数据流量很大时才会体现Z用Entity Beans的优ѝ其中,有一点很关键Q要注重Entity Beans技术的性能调优Q各个应用服务器都有自己的一套性能调优Ҏ。对于JBoss 3.2.1Q配|文件standardjboss.xml提供了Entity Beans技术调优的入口。比如,Bean Lock{略的合理用对于Entity Beans的调优就昑־很重要。这样得,我们可以更加x于系l的商业逻辑Q而不只是底层的DatabaseQEJB调优处于EJB Container中,因此我们处在J2EE性能的高端,而不是底端,即Database层。同ӞDatabase层的调优使得J2EEpȝ的数据库UL性大打折扣。)?BR>而言之,要结合各个系l的特定需求和状况l出具体的技术架构方案,而不能孤单的技术本w的好坏?BR>
2QFramework的合理选用
设计模式在J2EE应用pȝ中扮演着重要的角艌Ӏ因此,有一个问题摆在大安前,是自己来实现具体的设计模式,q是借助于Third-party Framework。如果贵公司不大Q或者说公司不想在J2EE基础应用Framework投入很多_֊Q选用现有的较为成熟的、稳定、与现有J2EE Specification兼容的技术框架会比较明智?BR>一般而言QFramework本nQ或者说J2EEq_本n都是实现q优化了具体的设计模式、规则,比如业务代理、Service LocatorQ包括Web Tier和EJB Tier各自的服务定位器Qv到统一理有限资源、Cache相关资源的作用,便于pȝULQ、Front Controller、DAO{等。现有的J2EE Framework比较丰富。比如:
Struts: 对于实现了Model 2cd的FrameworkQ对于现在以及将来(随着JSF规范、技术的成熟Q,选用Ҏ一U明Z举。目前,Struts已经发展?.1版本。其内在的MVCȝ、对后端数据操作方式没有限定、集合了Apache Jakarta目l的优秀相关目的精华,可谓是开发J2EE应用的佳品。同Ӟ对于h.NET Web Forms功能的下一代J2EEq_技术JSF而言QStruts本n可考虑CJSF的兼容和集成性。比如,通过JSP呈现表示层、Servlet呈现控制层、EJB呈现数据存储层。各层之_可以通过值对象、HTTP相关对象来通讯Q实现J2EE相关技术的完美应用?BR>Log4j: 我想对于习惯采用“System.out.println(“?;”的读者而言QLog4j是大家的音。尽Java 2 Standard Edition也具备java.util.logging包来保证日志的输出,但Log4j的简单、高效、灵zdl成了很多项目的选择。日志,在某U程度上可以考验pȝ的稳定性、正性,所以采用可配置的Log4jQ目前,Log4j已经考虑C与java.util.logging包的兼容性)是不会错的。比如,JBoss 3.2.1本n是借助于Log4j来管理日志的?BR>realMethods: 可能有些读者还不知道这一ƾ杀手锏。那好,q里q要作一介绍。realMethods是一开发J2EE应用的FrameworkQ她不同于Struts(主要在于实现Model 2QJ2EE应用前端)QrealMethods对于J2EE应用的各个层面都有详、高效的支持。同ӞrealMethods以前q是商用软gQ现在已l成ZOpen Source的品,因此现在可以参看其全部源代码?BR>BC4J: Oracle公司推出的用于Java的商业组件。其内容和外在的特点和优势,不言而寓?BR>当然Q类似的Framework很多很多。作为开发J2EE应用的团队而言Q我们需要对各种Framework加以{选,选择适合目需求、团队、公司发展方向的框架?BR>一般情况下Q待开发的目标产品不宜采用q多的Framework。其一QJ2EE各个技术发展很快,q多的Framework使得pȝ的后l升U、维护不利;其二Q可以借鉴其中的好的一面,比如研究realMethods实现的相应的设计模式Qƈ攚w她以适合我们的项目需求;其三QFramework本n会有变动Q如果选用q多Q会l开发团队加重负担,从而不利于目理?BR>有选择的用现有的成熟Framework能提升大家的开发效率、开发水q?BR>
3Q开发模式的选择
开发J2EE应用要求目标开发h员能够掌握其中的各种技术。但是,现实情况不是q样。作Z个团队,每个人都有自׃同的技能优ѝ兴以及悟性。同ӞJ2EE本n需要体现社会分工。一般情况下Q我们的开发团队不会有Specification所要求的各个开发角艌Ӏ现实往往只有3U(也可能是两种Q:工、JSPE序员、EJBE序员。面对这U分工,团队更要注重沟通、交,注重代码的一致性?BR>一般情况下Q团队要量采用版本控制工具理代码、尽量做到每天都有一个完整的q行版本。经q一D|_团队都会适应q种开发模式。其中,版本控制工具一定要使用Q便于代码的理、控制和备䆾。这其中会牵扯到很多层面。比如,开发工L选择要考虑到版本控制工L使用、徏模工L合理使用有助于团队有效的沟通和交流?BR>Z现有的开发模式,个h认ؓq样3套方案不错。第一Q采用Together作ؓ建模工具、采用JBuilder作ؓIDE工具、采用VSS(或者CVS)作ؓ版本控制工具、采用JBoss作ؓ开发J2EE应用开发阶D늚服务器。第二,采用WebSphere Studio整套工具。第三,采用Eclipse(或者JCreator)、Ant、XDoclets作ؓ开发工兗?BR>当然Q手工完成J2EE应用的编写、编译、打包、部|Ӏ测试更能开发者理解各个开发阶D늚具体l节。但本h认ؓQ只要开发者有q种x具体l节的态度Q选用功能强大的徏模、开发工h明智的。开发工具不能提高开发h员的开发技能,但是她能够引导开发h员正的开发方向。比?JBuidler 9 Enterprise提供的EJB_h的“Struts + EJB + Session Façade + Value Object”等功能呈现了业界广泛应用的J2EE构架方式?BR>
4Q注重各个阶D늚试工作
试工作往往是很多项目经理忽视,不愿意去p旉、费用的内容Q因为那样会增加目的成本。但是,他们忽视了,目的完成质量往往寚w目的成本有很大的关系。比如,如果软g质量很差Qƈ没有l历试阶段Q其后期部v、运行所带来的费用会q远过前期的费用?BR>试是分阶段的。单元测试,比如借助于JUnitQ来保证功能正确{内宏V集成测试,来保证系l没有内存泄漏等内容。其中,Optimizeite Suite Enterprise对于完成Profiler、Code Coverage、Thread Debugger{内容很有帮助。我记得Q我写的一个Swing桌面应用存在内容泄漏Q但是想了很多办法都没有解决问题。后来,采用Profiler获得了答案。因此,现在开发应用,我们很多时候都采用Optimizeite Suite Enterprise作ؓ试工具。尤其是Q在做集成测试过E中Q检查系l的内存泄漏、性能很有帮助?BR>试是分cd的。压力测试、性能试。就目前Ҏ持J2EE应用的测试而言Qƈ没有很好的测试工兗但是,一般情况下Q借助于Rational Robot也能够取得不错的效果?BR>
当然Q成功开发J2EE应用的因素有很多。比如,Entity Beans的成功应用很大程度上与底层Database的设计有关系Q如果表l构设计设计的不合理Q将DEntity Beans性能的急剧下降Q;如何最大化挖掘、提升团队各个成员的J2EE技能。等{这些,设计面很qѝ?BR>
本文阐述了关于在J2EE l的理解Q利用J2EEq_开 {等。这些都是作者在实际 l分析员的重要性,其?BR>素质对于整个目的成功与 |
q_上开发CRM应用pȝ的各?BR>发过E中要注意的一些技术深?BR>的工作中通过l验与教训所得来 对于以组件ؓ主要开发对象的?BR>否v着非常关键性的作用?BR> |
面内容,包括本h对于CRMp?BR>的问题,开发分析中要注意的原则 的。在工作中,我深ȝ体会到系 E项目,pȝ分析员的技术与业务 |
需要说明的是,qƈ?BR>其中关于一些涉及到具体?BR> | 作者工作文档,而仅仅是一分 pȝ设计问题Q我仅仅写了标题 |
享经验与教训的交文档,因此Q?BR>Q敬误解?BR> |
W二?CRM |
2.1 CRM概述 |
U学技术在不断的进?BR>源是他获胜的最重要的资?BR>成ؓ关键Q现代竞争其实就 所得到的体验,如何做到最 (CRM)应运而生Qƈ成ؓq?BR> |
Q市场竞争日益激烈,对于企业 之一Q首先企业竞争的优势不仅 是客L全面争夺而客户对企业 大程度的满客户是非帔R要的 q来西方市场的热点和大买炏V?BR> |
来说Q越来越强烈的感觉到客户?BR>仅是产品本nQ先q的服务手段?BR>的信ȝ度往往是从其消费过E中 内容Q因此,客户关系理pȝ |
实际上,CRM是企业与客L一U?BR>q去的部门别提升到了企业的层次Q各 户交,因此Q这p求能够将与客户?BR>的所有信息有机的整合?BR> |
一对一的需求关pȝ理。这P对待客户的视角就?BR>个部门共享客戯源,以一个统一的对外接口来与客 q各U方式如传真、邮件、电话、网늭交流所获得 |
在设计CRM应用pȝ的过E中Q我?BR>键是以客户ؓ数据l构的核心,q其中包 怨、客户徏议、客h务记录、客h?BR>是CRM应用pȝ有一个对于企业易于理 设计开发可以比较轻易地拓展Q具有良?BR>员能够更加易于控制整个的开发过E,?BR> |
首先要注意数据结构的格式QCRM应用pȝ的实施关 括客L基本信息、客h购买的商品列表、客h 需求、客户对企业的忠诚度{等。这栯计的原因一 解,易于操作的用h口,二是对于CRM应用pȝ?BR>的开发接口与开发弹性,对于目负责人、系l分?BR>项目开发的风险?BR> |
另外Q我们仔l研I过 但同时也看到了这些品的 原因在很大程度上是因为技 的J2EEq_上进行开发,q?BR> |
国内的数家公司的CRM应用pȝ 不Q在本文的后面部分我们将 术的原因Q因此,l过反复的论 样就很大E度上克服了那些不 |
的品,从中学到了很多的东西Q?BR>提到Q我们发玎ͼ造成q种不?BR>证,我们最l还是选择了在我熟?BR>?BR> |
2.2 CRM应用pȝ模块划分 |
CRM应用pȝ主要由市场管?Market 中心(Call Center)、电子商?E_Busine |
ing)、销售管?Sales)、服务管?Service)、呼?BR>ss)五部分组成?BR> |
市场理Q提供易于 跟踪市场{略Q分析竞争对 q客戯料中的诸如地域?BR>{等有h值的信息来从不同 l进行或者正在进行的营销 加有效的销售策略?BR> |
用的界面与工P使操作h员能 手的市场{略{等Q以便更加有 消费层次Q消费习惯与方式、潜 的角度彻底的q行市场的策略分 {略Q以及通过对自己和竞争?BR> |
够彻底的分析市场、客P{划?BR>效的拓展市场。在q个模块中,?BR>在需求、忠诚度、已购买产品列表 析,同时q可以评估和跟踪目前?BR>手的数据q行详细的分析,{划?BR> |
销售管理:理用户?BR>员可以不受地域限制及时掌 感兴的商品列表以及h 售队伍成员以及资源重新调 考,灉|q行产品配置、报 整合Q以便达到多方位、多 |
息、商业机会以及销售渠道等{?BR>握资源以及企业的最新的h?BR>信息。本模块包括Z、̎戗?BR>配的理Q有效跟t销售业l, 仗打折、生成销售订单等。另 层次的销售,同时减少销售成?BR> |
各方面的内容Q从而能够销售h 息,q可以向客户提供最新的和最 合同{的理Q销售队伍组成、销 同时提供个体的销售方式与q程?BR>外,本模块还应该和电子商务模?BR>?BR> |
服务理Q本模块通过 客户的满意程度,q且捕捉 能够适时的向客户其他 |
动态徏立知识库Q客户服务?BR>和跟t服务中出现的商业机会?BR>的品和服务?BR> | 表能够有效的提高服务质量Q增?BR>产品质量信息、客户需求等{,q?BR> |
呼叫中心Q呼叫中心是实施CRM应用 务模块进行了一个高度的集成Q一般的 账户、合同等{信息,q过知识库的?BR>叫中心提供当今最全面的计机电话集成 号吗识别(ANI)Q交互式语音应答pȝ(IV 技术,可以在用h叫的q程中业务代?BR> |
pȝ的重要的l成部分Q他实际上是销售模块和?BR>业务代表可以进行实时的销售和服务。它通过理 持,可以最大程度的满客户的多斚w的需求。呼 技?CTI)Q通过对已拨号码识别服?DNIS)Q自?BR>R)得全面支持,通过采用pȝ预制的计机电话集成 已经可以获得客户的资料,qzȝq行业务处理?BR> |
电子商务Q电子商务模块是以上所?BR>、高度集成以及易于用的用户界面Q在 购买、付ƾ、寻求服务支持、查询品与 联系在一P最大程度的满客户需求?BR> |
模块的一个逻辑集成Q它提供了一个个性化、h性化 q个用户界面上客户可以进行几乎所有的需求,诸如 服务目录、查询订单状态等{,甚至可以与呼叫中?BR> |
׃我们采用J2EE架构 、服务管理以及呼叫中心模 以ƈ且也应该使用销售管?BR>Q要充分利用J2EEq_的优 同时可以控制开发的质量?BR>负责人、系l分析员必须?BR> |
q_的开发方式,所以可以很?BR>块的内容集成到电子商务模块中 、服务管理模块中开发的lg?BR>点,lg的高度可重用性,减少 在实际的开发中Q对于EJB 、Se 握好质量?BR> |
易的我们在市场理、销售管?BR>Q同时呼叫中心的大部分功能也?BR>因此Q这p求我们在开发过E中 开发的成本Q加快开发的q度Qƈ rvlet的质量要求非怸|目 |
2.3 CRM应用pȝ模块内在关系 |
在前面已l提刎ͼ在开 Z业提供一个良好的易于 风险。以客户信息为核心, 大ؓ提高Q维护性加强。对 一U“插件”,各个模块?BR>制?BR> |
发CRM应用pȝ的数据结构时一 操作的用L面,另一斚w是提 所有的模块的内定w是围l客?BR>于开发h员,其是系l分析员 能之间的耦合性大为降低,很显 |
定要以客户信息ؓ核心Q一斚w?BR>高开发的可控性,减少开发成本与 Q这样也使得应用pȝ的可拓展?BR>Q所有的功能内容对于他来说都?BR>然会使整个的开发过E更加易于控 |
在各个模块的具体开发实施中Q销?BR>q销售h员的销售活动的信息支持Q对?BR>实时的给与市Zh员以信息支持Q从而随 应该说销售管理、服务管理、呼叫中心以 Q同时反q来Q市场管理策略也l与其余 l构地设计上以客户信息ؓ核心数据?BR> |
模块是基Q他负责理账户、机会等信息Qƈ且经 客户的信息(如需求、购买行为等Q的补充Q就可以 时把握销售策略,便于及时调整。从某种意义上讲Q?BR>及电子商务这四个模块都是作ؓ市场模块的信息支?BR>企业zd以策略支持。要实现q一点,必d数据 |
CRM应用pȝ各个模块 复杂的系l,我们不能按照 带来应用pȝ在开发、扩?BR>象,客戯源作为操作的 |
之间的关pd企业业务上关p非 一般传l的软g工程观念Q在?BR>以及l护斚w{很多的问题。正 核心?BR> |
常紧密,但是作ؓ一个非常庞大和 个模块之间通过接口通信Q这样会 合理的Ҏ是将客户视做一个对 |
2.4 CRM应用pȝ各模块的技术要?nbsp; |
Z客户对于CRM应用 用系l各个模块中除了呼叫 成瘦客户端(览器)/?BR>较,我们最l确定采用在J2 较成熟的技术规范,相对?BR>从很久就一直跟t分布式开 书籍)。因此,比较了几U?BR>务逻辑抽象出来Q写成组?BR>台界面,调用后台的商务?BR> |
pȝ的实际需求以及考虑到系l?BR>中心可以做成客户/服务?C/S) 务器(B/S)模式。经q了反复?BR>EEq_上开发CRM应用pȝ的技 微Y?NET来说Q它的开发要?BR>发的技术,对于J2EE的开发非?BR>开发^C后,我们军_采用J2 Q然后将其发布到服务器上Q再 辑?BR> |
的未来拓展性、可l护性,CRM?BR>体系模式之外Q其他模块都应该?BR>q且通过与别的技术方式的?BR>术方案。一斚w是因ZZU比 加安全、成本更低,另一斚wQ我 熟悉?当时q没有相关的中文?BR>EE。在q种开发^CQ我们将?BR>通过前台E序的开发程序员开发前 |
市场理、销售管理、服务管理之所 需要,可以不受地域的限Ӟ随时随地?BR>。因为我们看刎ͼ在呼叫中心模块中有销 其余模块的商务逻辑Q我们将其抽象出?BR>?BR> |
以采用分布式的开发,一斚w是满业务h员的办公 办公Q另一斚w也是Z降低开发的成本与维护成?BR>售管理、服务管理等内容Q同时电子商务模块中又有 Q一是组件复用,二是减少开发工作量同时减少风险 |
W三章:J2EE |
3.1 J2EE概述 |
M一个有l验的Java l合E度Qƈ且发展非常迅 l别程序设计提供了丰富 Q它定义了整个标准的应用 注意力集中在装商业逻辑 都由应用E序容器或者服?BR>的运行时属性都可以使用?BR>供了一个简化的开发模型, 发商和应用服务器无关?BR> |
q_开发h员,都会知道q个q?BR>速。Javaq_的许多应用程序接 的功能。J2EE是一U技术规范, 开发体pȝ构和一个部|环境, 和商业规则上Q一切与基础l构 器来处理。甚臻I从属于事务?BR>度灵zȝ声明Ҏ在部|环境中 它具有工业强度的可拓展性,?BR> |
台具有非常强大的功能和非帔R?BR>?API)为各U应用程序设计和p?BR>他给开发h员提供了一U工作^?BR>在这个体pȝ构中Q应用开发者的 服务相关的问题以及底层分配问?BR>持久化、安全等{方面的应用lg 定制(一般采用XML)。这个^台提 持合理的集成和灵zȝ部vQ与开 |
3.2 J2EEl成部分 |
对于开发h员来_J2EEq_提供l?BR>式?BR> | 他们的就是三U,Jsp、Servlet、EJBq三U开发方 |
Jsp |
Jsp其实是一U高层的S 在执行时有一些不同。Jsp 执行和Servlet的一样了 然后输出l果?BR> |
ervlet。他与以往的其他网늼 引擎它和它所在的HTML文g一 Q先~译?class文gQ然后由 |
写脚本有很大的相似性,但是只是 起合成Servlet的代码,然后它的 支持java虚拟机的服务器来执行Q?BR> |
我们在用Jsp中可以用JavaBean来进行更加灵zȝ处理?nbsp; |
Servlet |
Servlet可以被看作是 q两个对象来输出和接收用 问别的ServletҎ、调用E hq行开发。在一般的?BR>一般的java语言可以进?BR> |
服务器端的appletQ它通过Serv 户传递的参数Q然后在内部的方 JB{等Q然后将处理l果q回l?BR>具中都已l构建好一个框ӞE?BR>开发了?BR> |
letResponse以及ServletRequest 法中执行操作Q如讉K数据库、访 客户端。可以通过集成化的开发工 序员只需要熟悉html标签以及熟悉 |
EJB |
EJB如果除去它的语言特点外,我想 可以L理解Q他非常cM于微软的DCOM 让客戯行透明调用Q而不必关心位|, 相关的配|文Ӟ以便告诉容器她要怎样 开发工P如JBuilderQ就可以大大减少 容器信息Q我们可以通过它的模板来完?BR>?BR> |
对于大多数有比较丰富~程l验的开发h员来说应?BR>。他有一个自p存活要活动的一个容器,Z可以 他还必须有一个本地和q程接口Q同时还应该有一?BR>的活法。对于开发h员来_如果采用一U集成化?BR>工作量。在JBuilder中通过配置相关的服务器路径?BR>一个EJBlg的开发以及分发,非常方便也非常简?BR> |
在开发过E中Q徏议的 但是Ҏ据库的亲和,而会 以结合这两种bean的所有优 据库的访问同时会话bean?BR> |
开发方式是在会话bean内部调用 话bean中有我们Z控制E序?BR>点,来比较轻杄q行开发。比 来保存客L上下文信息?BR> |
实体beanQ因为实体bean没有状?BR>需要的上下文信息,因此Q我们可 如在会话bean中用实体beanq行?BR> |
3.3 J2EE各组成部分在开发CRM应用pȝ中的脚色 |
我们已经提到q,开发一个健壮的?BR>外我们都采用浏览器/服务器模式。因 |
可拓展的CRM应用pȝ中的各个模块Q除了呼叫中?BR>此,下面的模式是除了呼叫中心模块之外的方式: |
览?-------〉Jsp脚本文g----- EJB------讉K数据?--------〉处理返 |
---调用---------〉Servlet------调用--------?BR>回?BR> |
其中Jsp属于前台开?BR>Q用性强Q便于操作; |
人员q行的开发内容,也就是提 |
供给客户的用L面,要求是美?BR> |
Servlet、EJB为后台开 他们主要是进行企业的商务 的独立性与l合性?BR> |
发h员开发的h可以重用性的 逻辑的处理。要求是开发的E序 |
包含商务逻辑的组Ӟ也就是说Q?BR>一定要健壮Q充分注意到业务逻辑 |
在开发CRMpȝӞ前面已经说过Q?BR>pȝ业务的理解程度将极大的决定了pȝ 完全l化到Servlet、EJBlg所装的商 |
pȝ分析员自w对于J2EE技术的把握深度Q对于CRM 的成功与否。就是在做系l分析时一定要做到功?BR>务逻辑中去Qƈ且要反复其合理性与独立性?BR> |
3.4 J2EE各技术实现CRM应用pȝ的特?nbsp; |
Jsp相对来说比较单,但是在开?BR>攑ֈJsp文g中,有几个原因,一是Jsp?BR>的开发,会极大的增加开发与l护成本 后将版面分割成不同的部分Q用不同的被 某些与程序逻辑实现无关的动态内Ҏ?BR>的Jsp文g时系l分析员要注意下面的?BR> |
q程中系l分析员一定要注意可能少地将商务逻辑 件本w的可维护性比较差Q尤其是如果不采用的方式 。因此,在前台的Jsp开发中首先要划分出版面Q然 包含文g来最l组成用L面。另外要注意的一Ҏ 攑֜数据库中Q而不要放在文件中。所以在开发前?BR>个问题: |
1、划分版面的界面逻辑Q用包含文g的方式给E序员确定开发代码; |
2、尽量不商务逻辑攑֜Jsp文g中,所有的业务处理都要调用后台的组Ӟ |
3、当涉及到的界面?BR>Jsp文g中直接嵌入java?BR> | 辑较多的时候,要给E序员设?BR>码,否则会造成Jsp文g的可?BR> | JavaBean来进行处理,而不是在 性非常差Q维护与调试异常困难?BR> |
Servlet作ؓ在服务器 的、准等的要求外Q还?BR>相比通用|关接口CGI有着 的线E,但是可能很多E序 间是׃n的,q且如果存在 鼓励E序员多注意利用Java synchronized技术等Q解?BR>的访问数据库会造成数据?BR>分配q接q在释放以后能够 |
后台q行处理的组Ӟ除了业务 一个很重要的要求:是U程?BR>明显的优点就是可以维护一个线 员都会意识不C个经怼遇到 着Servlet链互调时Q就会发?BR>提供的方法(如声明自qcd U程的问题,另外q要注意的是 服务器的负担同时使客L的回 回收的连接池。所以,在开发Se |
上商务逻辑要独立、完整、可l合 全性。显Ӟ我们都知道Servlet E池Q不用每一ơ都要创Z个新 的问题:实例变量在所有的U程?BR>数据错误。因此系l分析员一定要 CRunnable接口或者采用同?BR>数据库的q接问题Q因为如果频J?BR>馈速度变慢Q因此要注意利用预先 rvlet也要注意下面?个问题: |
1、鼓q序员xU?BR>步synchronized技术等解决 |
E安全问?如采用声明自q U程的问?Q?BR> |
cdCRunnable接口或者采用同 |
2、数据库的访问要?BR> | 分利用JDBC技术的预先分配q接 |
q在释放以后能够回收的连接池Q?BR> |
3、鼓ql分析员?BR>实际的程序中通过Servlet |
商务逻辑划分成单个的独立的可 链来完成某项商务逻辑?BR> |
通用的可重用的商务逻辑lgQ在 |
EJB实际上单q序的写作斚w要比S 甚麽可以了Q而不必关心事务的处理Q?BR>要求Q?BR> |
ervlet单的多,它ɽE序员只需要关心要实现的是 底层的操作等{问题。但是也q是有一些编E方面的 |
1、最好能够在E序?BR>出现时语义的不一致问题; |
所有的static字段都声明ؓfi |
nal型的Q这样可以保证多个实?BR> |
2、注意线E问题,同ServletQ?nbsp; |
3、不使用文gpȝ。E 询,基本上是不用文gpȝ |
JBlg可以通过环境命名上下?BR>?BR> | 用一U标准的Ҏq行环境实体?BR> |
4、禁用socket来进行监听和接收q接Q或者用其进行多路发送?nbsp; |
5、不可能用awt函数来完成键盘的?BR>息,因ؓlg是用来在服务器端完成某一 |
入和输出Q如果有的话Q应该是向控制台输出控制?BR>商务逻辑的?BR> |
W四章:J2EEq_架构开发CRM的内?nbsp; |
本章的内Ҏ一个非?BR>Q运行图{等。因为某U原 |
大的部分Q他所늛的就是具?BR>因,q儿׃写了Q请谅解?BR> | 的开发方案,其中包括使用案例?BR> |
W五章:技术层面控制J2EEq_架构开发CRM的过E?nbsp; |
在J2EEq_上开发CRM应用pȝQ是 技术规范,各大IT服务器、中间g厂商?BR>?NET是一Ҏ的技术规范,如果在其?BR>是在走向成熟?BR> |
一个非怼U的方案,一斚wJ2EE是一Ҏ较成熟的 都大力推崇ƈ支持Q尽微软大力推?NETQ但是毕 q行开发的话,风险昄要大得多Q而J2EE目前却正 |
正像M事情一P?BR>Q在q个q程当中Q有一?BR>握深度、对CRM应用pȝ?BR>pȝ分析员自w的素质军_ 员对于客L需求的理解E?BR>Q其ơ是pȝ分析员的思维 到将商务逻辑q一步细化成 有着非常q掌握Q这是实 在服务器端lg的开发上 是否规范与合理,而系l分 |
先进的J2EEq_上开发CRM应用 非常重要的脚Ԍpȝ分析员?BR>业务理解E度很大得媄响了开?BR>了开发的成功与否Q这是一个非 度,只有深入的理解了客户的需 是否严密Q是否严谨,是否h 独立的可重用的业务逻辑与?BR>施CRM的另外一个重要之处,?BR>Q一个系l能否稳定,高效的运 析员在实施编码阶D늚主要职责 |
pȝ必须要有一个良好的实施q程 pȝ分析员自w对于J2EE技术的?BR>的过E,甚至可以毫不夸张的说Q?BR>常关键的因素?首先是系l分?BR>求,才能够将商务逻辑很好的划?BR>很强的逻辑思维能力Q因涉及 逻辑。第三是其是否对于J2EE技?BR>为在整个的开发过E中Q其实重?BR>行,很大E度上取决于开发技术上 是负责查程序员的程序代?BR> |
在开发过E中另外一?BR>概念不同Q它有着严格的分 |
注意的是开发h员的分工。在J2 工: |
EEq_上的开发与一般的软g开?BR> |
1、系l分析员Q?nbsp; |
2、后台组件开发程序员Q主要是Servlet与EJBQ? |
3、后台服务器实施技术h?主要负责lg的管?Q?nbsp; |
4、后台组件测试h员; |
5、前台用L面程序员Q主要是jspE序?工Q; |
6、前台测试技术h员; |
在实际的实施q程中,后台服务器实 Q前台用L面程序员可以充当前台试 |
施技术h员可以充当后台组件测试h员的脚色Q同?BR>技术h员,因ؓ他的面中所包含的逻辑比较?BR> |
ȝ一下,关键的几?BR>含有一U商务逻辑Q一般的 何组合就是看pȝ分析员的 Q尽量避免前台程序员与后 而这是绝对不允许的,否则 在开发过E中一定要注意l?BR>严格把关Q这一炚w帔R?BR> |
Q?、商务逻辑一定要划分的非 商务逻辑应该是通过几个lg?BR>功底了!Q?、分工一定要明确 台程序员的脚色互换,否则很可 随着开发过E的q行Q就会发?BR>件的商务逻辑的独立性与唯一?BR>重要?BR> |
常合理,原则是一个组件中应该?BR>协同合作来实现的Q如何划分,?BR>Q除了上面所列出的脚色充当之?BR>能造成商务逻辑lg之间的耦合Q?BR>来难以控制应用的开发。所?BR>Q系l分析员和项目负责h一定要 |
W六章:CRM应用pȝ各个模块的具体技术实?nbsp; |
应用pȝ都是开发商ZҎ业?BR>Q即便是同一行业也有不同Q因此,要根 都有一个共同的框架Q就是上面所提到?BR>?具体商务逻辑。而框枉分则是?BR>象出来做成组Ӟ以备复用?BR> |
的深ȝ解而生的Q不同的行业有不同的商务逻辑 据客L实际需求来做。但是,作ؓ一个CRMpȝ?BR>Q因为,一套完整和实用的CRMpȝ可以看作是: ?BR>面要求系l分析员所做的工作Q将通用的商务逻辑?BR> |
本章应该是一个详l的模块设计Q其 。出于和W四章同L原因Q请谅解?BR> |
中包括组件组合用图Q流E图以及其他的文档等{?BR> |
W七章:国内CRMpȝ目前存在的问题以及采用J2EE技术进行的解决Ҏ |
我们研究q国内几家CR 例子Q?BR> |
MpȝQ学习到很多的东西,?BR> |
同时也发C些问题,现在丑և?BR> |
1?大而全Q但是各个功能做的太q于单,无法实用?nbsp; |
2?~Z集成能力Q无法将|页、电邮、电话、传真等集成?nbsp; |
3?没有与客L互动渠道?nbsp; |
p三个原因Q是因ؓ在整个的设计 l、完整的划分成个体的、独立的功能l?BR>加上如开发成本的压力{。而如果是采用 开发,׃解决或者避免或者减轻这些问 Q电子商务模块基本上也就完成Q只需?BR> |
上偏M以客户ؓ中心的原则,没有客L需求详 Ӟ没有各个功能做成是以客户ؓ核心的插Ӟ?BR>J2EEQƈ且严格的按照合理划分的组件的方式来进?BR>题。比如,在开发完销售模块与服务模块的组件之?BR>许的其它组件就可以完成一个电子商务模块?BR> |
模型-视图-控制器(MVCQ是80q代Smalltalk-80出现的一UY件设计模式,现在已经被广泛的使用?
1、模型(ModelQ?BR>
模型是应用程序的M部分。模型表CZ务数据,或者业务逻辑.
2、视图(ViewQ?BR>
视图是应用程序中用户界面相关的部分,是用L到ƈ与之交互的界面?
3、控制器Qcontroller)
控制器工作就是根据用L输入Q控制用L面数据显C和更新model对象状态?BR>
MVC 式的出现不仅实现了功能模块和昄模块的分,同时它还提高了应用系l的可维护性、可扩展性、可UL性和lg的可复用?
早期的程序中Q如果不注意Ҏ功能和显C的解耦合Q常怼DE序的复杂及难以l护。很多VB,Delphi{RADE序都有q种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在昄模块中的现象
MVC设计模式很早提出,但在Web目的开发中引入MVC却是步l艰。主要原因:一是在早期的Web目的开发中Q程序语a和HTML的分M直难以实现。CGIE序以字W串输出的Ş式动态地生成HTML内容。后来随着脚本语言的出玎ͼ前面的方式又被倒了q来Q改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不之处卛_们L无法程序语a和HTML分离。二是脚本语a的功能相对较弱,~Z支持MVC设计模式的一些必要的技术基。直到基于J2EE的JSP Model 2问世时才得以改观。它用JSP技术实现视囄功能Q用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能
JSP Model 1 ?JSP Model 2
SUN在JSP出现早期制定了两U规范,UCؓModel1和Model2。虽然Model2在一定程度上实现了MVCQ但是它的应用用q不如人意
JSP Model 1
JSP Model 2
model2 Ҏ使系l出现多个ControllerQƈ且对面D的处理比较复?
有些得model2仍不够好Q于是Craig R. McClanahan 2000q??提交了一个WEB frameworklJava Community.q就是后来的Struts.
2001q?月,Struts1.0Q正式发布。该目也成ZApache Jakarta的子目之一
Struts 质上是在Model2的基上实现的一个MVC架构。它只有一个中心控制器Q他采用XML定制转向的URL。采用Action来处理逻辑