webservice初识,SOAP1.1版本

客户端与服务端模式,非web端发布

1.1      【Jax-ws第一个例子】

1.1.1     第一步:服务端开发

 

  1. 编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中称为接口。

 

代码以下:java

/**web

 * 天气查询服务接口服务器

 * @version V1.0ide

 */工具

public interface WeatherInterface {测试

    //天气查询url

    public String queryWeather(String cityName);spa

   

}.net

 

  1. 编写SEI实现类,此类做为webservice提供服务类

 

代码以下:命令行

 

@WebService

public class WeatherInterfaceImpl implements WeatherInterface {

 

    @Override

    public String queryWeather(String cityName) {

       System.out.println("from client.."+cityName);

       String result = "晴朗";

       System.out.println("to client..."+result);

       return result;

    }

   

    public static void main(String[] args) {

       //发送webservice服务

       Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

    }

   

}

注意:

SEI实现类中至少要有一个非静态的公开方法须要做为webservice服务方法。

public class 上边要加上@WebService

 

  1. endpoint发布服务

 

//发送webservice服务

       Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

 

 

1.1.2     第二步:查看wsdl

Webservice发布成功,经过wsdl查看webservice发布的正确性

 

  1. 在地址栏输入(注意后面的参数?wsdl)

http://192.168.1.100:1234/weather?wsdl

  1. Wsdl不是webService,只是获取一个用于描述WebService的说明文件
  2. wsdl- WebServiceDescriptionLanguage,是以XML文件形式来描述WebService的”说明书”,有了说明书,咱们才能够知道如何使用或是调用这个服务.

 

 

1.1.3     第三步:Wsimport生成客户端调用类

 

1.1.3.1              Wsimport介绍

wsimport是jdk自带的webservice客户端工具,能够根据wsdl文档生成客户端调用代码(java代码).固然,不管服务器端的WebService是用什么语言写的,均可以生成调用webservice的客户端代码,服务端经过客户端代码调用webservice。

wsimport.exe位于JAVA_HOME\bin目录下.

经常使用参数为:

-d<目录>  - 将生成.class文件。默认参数。

-s<目录> - 将生成.java文件。

-p<生成的新包名> -将生成的类,放于指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必须的参数。

示例:

C:/> wsimport –s . http://127.0.0.1:1234/weather?wsdl

注意:-s不能分开,-s后面有个小点

 

 

1.1.3.2              客户端生成注意事项:

 

  1. 能够经过java –version检查你当前的版本号保存是jdk1.6以上。Jdk1.6.0_13之后的版本支持jaxws2.1。

 

  1. 在Eclipse中建立一个空的java工程为wsimport,此工程做为存放客户端代码。
  2. cmd命令行进入此wsimport 工程的src目录,

输入如下命令:

 

参数说明:-s是指编译出源代码文件,后面的.(点)指將代码放到当前目录下.

   最后面的http….是指获取wsdl说明书的地址.

 

  1. 生成完成,刷新Eclipse中wsimport工程,将src下生成.java文件代码Copy到webservice客户端工程(见下)中。

 

 

1.1.4     第四步:客户端编写

 

代码以下:

/**

 * 天气查询客户端

 * @version V1.0

 */

public class WeatherClient {

    public static void main(String[] args) {

       //建立服务视图

       WeatherInterfaceImplService weatherInterfaceImplService =new WeatherInterfaceImplService();

       //经过服务视图获得服务端点

       WeatherInterfaceImpl weatherInterfaceImpl= weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);

       //调用webservice服务方法

       String result = weatherInterfaceImpl.queryWeather("郑州");

       System.out.println(result);

    }

}

 

 

1.1.5     webservice优势

一、采用xml支持跨平台远程调用。

二、基于http的soap协议,可跨越防火墙。

三、支持面向对象开发。

四、有利于软件和数据重用,实现松耦合。

 

1.1.6     webservice缺点

因为soap是基于xml传输,自己使用xml传输会传输一些无关的东西从而效率不高,随着soap协议的完善,soap协议增长了许多内容,这样就致使了使用soap协议进行数据传输的效率不高。

 

 

若是要使用SOAP1.2版本也可,可是测试必须借助第三方,由于jdk不支持根据wsdl(SOAP1.2版本的)生成客户端类,能够使用CXF生成并测试

相关文章
相关标签/搜索