background image

 
< Package>Internet< /Package>
    < Bandwidth>1mbps< /Bandwidth>
    < DownloadLimit>1Gbyte< /DownloadLimit>
    < Uptime>95< /Uptime>
    < /ServiceInstance>
    

 

代码解释了这个用户 XML 服务模型。该模型包括:

    一个服务实例
    客户名字
    服务包的名称
    已配置的带宽量
    每月允许的下载限度
    提供商正常运行时间保证
    无疑,服务定义可以比此处的例子复杂很多。其他内容可能包括客户地址、账单明细、

 

 

往返延迟、加密和服务信用信息等。重点是,越来越多的提供商提供如 清单 1 

 

所示的 Web 

访问细节。某种程度上讲,这种尝试可以减少支持电话的花销和发生频度。有趣的是,这

 

种基于 Web 的服务可以使用户觉得为他们提供服务的是较为先进的提供商。这实现了双
赢的局面,因为客户可以更好地访问他们的服务数据,而提供商可以销售无需他们插手

 

 

 

的 服务包。授权的用户可以修改如 清单 1 

 — 

所示的一些服务参数

例如,配置的带宽。随

之修改的是用户每月的订购费用。
    

 

因此,清单 1 

 

中的代码形成了基于 XML 的服务模型的基础。通过简单地与在线表单进

行交互,用户可以修改可写的服务元素(例如带宽)。通过在线表单进行的修改将被记录,
然后反映到可由用户配置文件修改的后端服务中。这是一种实现自助服务的标准方法。
    

 — 

然而,您将要了解的是另一种更加松散耦合的自助服务

使用这种服务,用户可以

 

 

通过在网络中传输 清单 1 

 

中的 XML 

 

内容修改数据。在这种场景中,所传输的 XML 内容

 

可通过一个 Java 客户机进行修改,后者可运行

台式机

§

笔记本

§电脑、甚至某种资源受

限的设备上(例

手机

§),然后将数据发回给网络服务提供商。这种机制超越了基本的

 

HTML 

 

页面模型并采纳了 SOA 思想。

    

 

将服务定义 XML 

 

文档传输给使用 Java 技术的客户机

    

 

清单 2 

 

中的内容摘取自本文附带的 Java 

 

文件 encodeXML.java.(

 

 

相关文件可从 下载 部

分获得)。encodeXML.java 

 

类对 XMLEncoder 类的对象进行了实例化。如您所见,这个对象

 

随后在当前目录中创建了名为 xmldata.xml 

 

的文件。下一步是将 XML 数据值插入到文件

 

中,这可以通过调用一连串的 writeObject() 方法实现(

 

清单 2 对此进行了说明)。显然,在

 

生产环境中,清单 2 中硬编码的文本字符串将来自数据库这样的持久

存储

§。无论何种

 

情况,可以看到 XML 数据文件的创建非常简单。
    

 

清单 2. 

 

使用 XML 格式编码数据

    XMLEncoder e = new XMLEncoder(
    new BufferedOutputStream(
    new FileOutputStream("xmldata.xml")));
    e.writeObject("Josephine Bloggs");
    e.writeObject("Internet");
    e.writeObject("1mbps");
    e.writeObject("Gbyte");