Axis手册------发布服务

阅读更多
总结起来,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。本例子并没有用的。

至此,你知道要开发一个服务器/客户端的所有的文件了。

你可能感兴趣的:(应用服务器,Java,Web,Apache,SOAP)