zoukankan      html  css  js  c++  java
  • webservice初识,SOAP1.1版本

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

    1.1      【Jax-ws第一个例子】

    1.1.1     第一步:服务端开发

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

    代码如下:

    /**

     * 天气查询服务接口

     * @version V1.0

     */

    public interface WeatherInterface {

        //天气查询

        public String queryWeather(String cityName);

       

    }

    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_HOMEin目录下.

    常用参数为:

    -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优点

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

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

    3、支持面向对象开发。

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

    1.1.6     webservice缺点

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

    如果要使用SOAP1.2版本也可,但是测试必须借助第三方,因为jdk不支持根据wsdl(SOAP1.2版本的)生成客户端类,可以使用CXF生成并测试

  • 相关阅读:
    推荐一个学习 SharePoint 2010 的站点
    应用反射技术为Infragistics Solution设计例子程序 代码简洁而且学习的效率高
    .NET程序员掌握的.NET技术
    Jpegoptim Tool
    Stack Overflow 漫谈
    NServiceBus最流行的开源企业服务总线AND让创建企业级.NET系统更加容易
    步步为营UML建模系列四、状态图(State)
    Web中的幻灯片组件实现
    轻轻松松SOA: NServiceBus
    细说 ASP.NET Cache 及其高级用法
  • 原文地址:https://www.cnblogs.com/webyyq/p/8641998.html
Copyright © 2011-2022 走看看