3.XML解析
XML(Extensible Markup Language)是一种独立于系统的表达数据信息的标记语言,现已成为网络系统中通用的数据交换格式。本系统采用XML技术进行数据交换,利用它的分级结构,很容易访问到所需的数据信息。这就意味着想要取得远程服务器端XML文档中的数据信息,MIDlet编程就必须支持XML解析技术。从网上不难得到J2ME端的XML解析器,本系统采用的是NanoXML,它是一种非确认(non-validating)、单步(single-step)解析器。NanoXML解析整个XML文档,并把它转换成一棵元素树(如图2),可以通过调用方法getChildren、getTagName、getContents等来遍历整棵树,得到数据信息。
图2 XML文件和相对应的树型文件模型 表示层(Web Tier) Servlets和JavaBean构成了表示层。这是一种控制结构,减低了视图与模型之间的耦合性。当Servlet响应到一个HTTP GET请求时,doGet()方法被service()方法的默认实现所调用,并把request对象和response对象作为参数传给该函数。整个程序覆盖了doGet()方法,它们所做主要工作是创建JavaBean实例,传递request对象,调用bean方法,取得存放于Bean中的数据,返回结果(XML文档)。JavaBean封装了更为复杂的业务逻辑,可以调用EJB方法执行各种数据存取的事务。JavaBean是一种可重用组件,提高代码复用性,加快了
软件开发过程。如上所述,系统利用JAXP和W3C提供的访问XML的接口DOM来处理XML文档。代码如下所示:
<custList>
<matchedCust>7</matchedCust>
<customer>
<id>Cust_001</id>
<name>Oliver</name>
</customer>
</custList>
业务逻辑层(Business Tier) EJB container提供了一种系统级服务,开发者只需要专注于业务逻辑处理即可。系统运用实体Bean封装数据对象,建立与数据库间的映射。会话Bean封装了业务逻辑,该系统实现的会话Bean是无状态的。业务逻辑层结构如图3所示。
EJBs功能如表1 表1
包ejb.entity 封装了客户、联系人、产品、商业机会及客户服务请求等数据信息,并提供Home、Remote访问接口。
包ejb.session 封装了系统所需的业务逻辑和数据操作,包括添加、查询、更新和删除各项信息,并提供Home、Remote访问接口,也提供了一些方便数据操作的辅助类。
数据库(Backend Tier) 利用Sun公司提供的JDBC API可以很方便地操作关系型数据库(RDBMS),如上所述,实体Bean要与数据库表建立一种良好的映射关系。设计数据库时要注意主键值,它是惟一标识。本系统数据库共有五张表,见表2。
表2 现在,以“创建客户信息”为用例,察看整个系统各个模块间的协作与实现。
请求参数输入界面: CRMCustomer.java
响应的servlet: custCreate.java
处理请求的JavaBean: CRMController.java
调用的会话bean: CRMBean.java
实体bean: CustBean.java
数据库表: customer
显示结果: CRMCustomer.java
在整个开发周期中,需不断精化和细化用户需求,改进用例与建模,迭代构造和测试,使系统趋于完善。
小结 利用Java无线应用技术,结合J2ME和J2EE平台,可以设计并开发出健壮、高效的企业级无线应用程序,帮助企业提升经济效益。现在,越来越多的电信厂商生产出性能优越的Java手机,而且在电信运营商、电信设备制造商和应用程序开发者之间存在着一种较好的盈利模式。我们相信Java无线应用会有更好的发展。