因为不会写总结性的介绍,所以直接以简单的例子来开头。本笔记所有内容使用语言为Java。
一、服务端Server
1.接口SayHello
package service;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface SayHello {
@WebMethod
public String sayHello(String name);
}
2.接口的实现类SayHelloImpl
import javax.jws.WebService;
import service.SayHello;
@WebService
public class SayHelloImpl implements SayHello {
@Override
public String sayHello(String name) {
System.out.println("Server : Hello!" + name);
return "Hello:"+name;
}
}
3.把service的方法发布出去ServicePublish
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import service.impl.SayHelloImpl;
@WebService
public class ServicePublish {
public static void main(String[] args) {
String address = "http://127.0.0.1:9010/ws/sayHello";
Endpoint.publish(address, new SayHelloImpl());
System.out.println("WebService Publish Success!");
}
}
服务端的代码结构:
当控制台出现下列字符串时,service就成功发布了。
WebService Publish Success!
二、客户端Client
服务端成功发布之后,可以根据WSDL链接生成客户端代码。WSDL链接就是自定义URL地址后面加上?wsdl(URL?wsdl)这样的形式。
生成客户端代码的方式有四种:
1. 使用JDK自带的wsimport命令生成,要求JDK要在1.6以上
2. 使用Eclipse中自带的Web Service工具生成客户端(使用的是Axis 1.4.6框架)
3. 使用Axis2框架生成
4. 使用CXF框架生成
在本篇文章中,仅使用JDK自带的wsimport命令生成客户端。其他的生成方式,后续再去比较。
生成客户端的方式,打开cmd界面,输入以下命令:
wsimport -keep -s E:\example http://127.0.0.1:9010/ws/sayHello?wsdl
wsimport的选项:
-keep:生成java源文件
-s:指定java源文件的输出目录
-d:生成class文件,并指定class文件的输出目录
-p:定义生成类的包名,不定义的话有默认的包名
当CMD窗口出现类似下面的内容时,说明客户端成功生成。
Ecplise中项目的代码结构为:
测试客户端的方法非常简单
建一个测试类TestClient.java
import service.impl.SayHelloImpl;
import service.impl.SayHelloImplService;
public class TestClient {
public static void main(String[] args) {
SayHelloImpl say = new SayHelloImplService().getSayHelloImplPort();
String str = say.sayHello("WebService");
System.out.println(str);
}
如果测试类成功的话,控制台会出现如下字符串:
至此,一个WebService的简单例子就简单完成了,例子内容包括服务端、客户端、wsimport命令。