阅读更多
总结起来,Axis有两种方式发布服务:
1.JWS文件。适合比较简单的服务,它是运行期编译的,所以需要源码。不适合大型应用。
2.使用AdminClient工具利用wsdd发布。
生成WSDL的方式也有两种:
1.直接在服务的url后面加"?wdsl"
2.使用Java2WSDL工具。
然后开发一个web服务的方式也有好多种,选择哪一种就要看个人喜好了。
不过我还是推荐下面的模式:
1. 编写服务接口,一个java接口--------------->2.使用Java2WSDL生成wsdl文件。---------------- ------>3.使用WSDL2Java生成服务端/客户端 绑定。 4.修改生成的Impl --java代码的内容,完成服务。搞定收工。
以前我们已经介绍了前两种方式,我们这里主要谈谈使用Java2WSDL的使用。
Java2WSDL,和WSDL2Java是两个方便开发web 服务的工具。下面的文章主要描述了如何从一个java接口创建一个web 服务。
第一步:提供一个java接口,或者是类。
首先,编写一个描述web服务的java接口(或者是类),例如:
package samples.userguide.example6;
/**
* Interface describing a web service to set and get Widget prices.
**/
public interface WidgetPrice {
public void setWidgetPrice(String widgetName, String price);
public String getWidgetPrice(String widgetName);
}
第二步:
使用Java2WSDL工具从上面的接口创建一个wsdl文件:
% java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl
-l"http://localhost:8080/axis/services/WidgetPrice"
-n "urn:Example6" -p"samples.userguide.example6" "urn:Example6"
samples.userguide.example6.WidgetPrice
其中:
1.-o 指出输出wsdl文件的名字。
2.-l 指出这个服务的地址.
3.-n 目标wsdl文件的namespace。
4-p 指出java包到namespace的映射。可以有多个映射。
5.描述web服务的java的接口或者是类。
输出的WSDL文档将包含了相应的Wsdl: types,messages,portType,binding,和支持SOAP rpc的服务描述,编码 web服务。如果你的提供的接口方法使用了其他类的引用,Java2WSDL会生成相应的xml type来描述这个类,包括其中的内隐类和嵌套的所以的类。这个工具支持JAX-RPC复杂的类型(bean),arrays,enumeration, Holder类,继承等。
第三步:使用WSDL2Java创建绑定。
使用上面生成的wsdl文件去创建对应的服务端/客户端的绑定到web服务上。
% java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true
-Nurn:Example6 samples.userguide.example6 wp.wsdl
将会创建一下文件:
* WidgetPriceSoapBindingImpl.java : 这个是服务的实现,也就是我们接口的实现类。你可以通过修改这个类完成服务的实现。
*
* WidgetPrice.java: 新的接口文件,包含相应的 java.rmi.Remote .
* WidgetPriceService.java: java文件,客户端的服务接口。
* WidgetPriceServiceLocator.java: java文件,客户端的服务实现。
* WidgetPriceSoapBindingSkeleton.java: 服务端 skeleton.
* WidgetPriceSoapBindingStub.java:客户端 stub.
* deploy.wsdd: 发布描述
* undeploy.wsdd: 解除发布
* (data types): 文件,是web服务必须的其他的type和holders。本例子并没有用的。
至此,你知道要开发一个服务器/客户端的所有的文件了。