WEB开发网
开发学院软件开发Java Web 服务编程技巧与窍门: 协同使用集合与 SOAP 和... 阅读

Web 服务编程技巧与窍门: 协同使用集合与 SOAP 和 JAX-RPC

 2010-03-23 00:00:00 来源:WEB开发网   
核心提示: 正如您可以看到的,该工具为一些称为 ArrayOfXSDAnyType 的类型生成了复杂类型的定义,Web 服务编程技巧与窍门: 协同使用集合与 SOAP 和 JAX-RPC(3),而它又是类型 <xsd:anyType> 的一个未绑定序列,它为什么生成 xsd:linkedList

正如您可以看到的,该工具为一些称为 ArrayOfXSDAnyType 的类型生成了复杂类型的定义,而它又是类型 <xsd:anyType> 的一个未绑定序列。它为什么生成 xsd:linkedList 类型的元素来包含您的 Customers 对象?这是因为没有 xsd:linkedList 。也没有 xsd:hashMap 、 xsd:treeSet 、 xsd:vector 和 xsd:stack 。所有这些虚构的类型除了可以存储有序的对象列表外,还具有一些与它们相关的隐含功能。每种语言、工具或环境都可以自由地提供任意的集合构造来完成下列工作:

实现隐含功能的变体

省去这种类型的集合

定义没有包括在 Java 集合中的其他类型

那么,您如何以互操作的方式交换对象集合呢?答案是使用数组。

解决方案?普通数组……

虽然一些可能确实能够在您的特定环境(比如 Java 到 Java 的环境)中正常工作,但是在其他的环境中却不尽然。因此,我们建议不要在服务接口上使用这些类。在 Web 服务之间转换对象集合的唯一方法是将其作为数组。WS-I 基本概要(WS-I Basic Profile)描述了如何将数组(它仍然是特定于语言的构造)映射到 XML、以及如何在 XML 模式中对此进行描述,以使得它的处理在多个环境中可互操作。 清单 3 显示了经过修改的 CustomerService JavaBean 看起来像什么:

清单 3. 使用简单数组的 CustomerService 类

public class TheCustomerService { 
 public Customer[] getCustomers(String queryString) { 
 Customer customer1, customer2; 
 /* ... retrieve customers for query ... */ 
 /* create an array large enough to hold the result set */ 
 Customer[] customers = new Customer[2]; 
 /* iterate over the result set assigning to the array */ 
 customers[0] = customer1; 
 customers[1] = customer2; 
 return customers; 
 } 
} 

上一页  1 2 3 4 5  下一页

Tags:Web 服务 编程技巧

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接