SOAP净化有线协议(四):}public String sayHelloTo(Name theName){System.out.println(sayHelloTo(Name th
SOAP净化有线协议(四):
}
public String sayHelloTo(Name theName)
{
System.out.println("sayHelloTo(Name theName)");
return "Hello " + theName.getName() + ", How are you doing?";
}
}
回忆一下,Name是一个简单的JavaBean,代码如下:
package hello;
public class Name
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
事实上,这里服务的代码与第二篇文章中的服务程序代码完全一样。对于服务开发者来说,唯一增加的工作是创建Java接口。部署服务的方法也和第二篇文章中讨论的完全一样,所以这里我不再介绍。相同的地方还不止如此,编译和运行客户程序的方法也和第二篇文章介绍的一样。为什么有这么多相同之处呢?因为我们创建的代理是一个非插入式的框架,它不会修改和干涉任何Apache SOAP部件的内部工作——无论是客户端还是服务端。
三、其他说明 本文讨论的SOAP代理(可以从文章后面下载)支持以下参数类型:
⑴ 下面的Java基本数据类型及其对应的对象形式。
boolean, Boolean,
double, Double,
float, Float,
long, Long,
int, Integer,
short, Short,
byte, Byte
注:服务器端总是接收基本数据类型。
⑵ 任何JavaBean
注:
该JavaBean不能包含其他JavaBean。
如果数组或向量包含除字符串或1列出数据类型之外的类型,则JavaBean不能包含这类数组或向量。
⑶ 下面的类:String, Vector
注:
Vector可以包含1、2列出的所有类型和字符串。
服务器端把Vector作为一个对象的数组接收。
⑷ 数组。数组元素可以是在1、2中列出的所有类型和字符串(上面已注明的除外)。
■ 结束语 在这个四篇文章构成的系列中,我不仅介绍了SOAP的基础知识,而且介绍了SOAP 1.1标准的一个优秀的实现:Apache SOAP。在本文中,我提供了一个以动态代理类为基础的框架,这个框架极大地简化了使用Apache SOAP的客户程序开发者的工作。
我深切地感到SOAP有着美好的前景,至少有两个理由使我这么认为:首先,SOAP以一些开放的标准为基础,比如XML。这使得无论是Microsoft,还是反Microsoft的企业,都广泛地接受了SOAP。对于开发者来说,这无疑是一个天大的好消息。第二,SOAP正在成为其他许多标准的基础,比如UDDI(Universal Description,Discovery,and Integration)。许多人认为,Web服务代表着下一代的Web应用开发,而SOAP和UDDI都是Web服务的关键组成部分。
■ 参考资源 下载本文的完整代码:JavaAndSOAP4_code.zip
W3C的SOAP 1.1规范:
http://www.w3.org/TR/SOAP/
有关动态代理类的更多信息:
http://java.sun.com/j2se/1.3/docs/guide/reflection/proxy.html
关于IBM SOAP工程的更多信息:
http://www.alphaworks.ibm.com/tech/soap4j
下载Apache SOAP:
http://xml.apache.org/dist/soap/