• webservice快速入门-使用wsimport生成ws服务端(二)


        上个例子演示的是在当前项目下发布的Webservice Server,而实际应用中和Client是分离的,本文介绍两种客户端开发方式:

    1.导出WebService服务端服务接口到jar包,客户端引入jar包即可,Client开发步骤详见上一篇博客。

    2.通过wsimport工具导出webservice服务,同时简化Client开发。

    本文主要介绍通过wsimport导出webservice:

    wsimport有几个很重要的参数,

    -d 表示输出的目录,目录必须事先存在,否则导出失败。

     -keep表示导出webservice的class文件时是否也导出源代码java文件。

    -verbose表示详细信息。

    看我们的导出命令。我们直接导在d盘中。

    我们直接把生成的目录放在第2个建好的项目中去。这样我们客户端的项目就可以直接使用服务端的接口IMyservice了。顺便我们把前一章的client访问类也拷过来测试一下。目录结构如下【注意这是一个新的项目】:

    直接运行MyClient测试一下。

     1 package org.WebService.ws.annotation;
     2 
     3 import java.net.MalformedURLException;
     4 import java.net.URL;
     5 
     6 import javax.xml.namespace.QName;
     7 import javax.xml.ws.Service;
     8 
     9 public class Client {
    10 
    11     public static void main(String[] args) throws MalformedURLException {
    12         // TODO Auto-generated method stub
    13         URL url=new URL("http://localhost:9998/hw?wsdl");
    14         QName qname = new QName("http://annotation.ws.WebService.org/", "CalculatorImplService");
    15         Service service = Service.create(url, qname);
    16         ICalculator cal = service.getPort(ICalculator.class);
    17         cal.add(1, 2);
    18         cal.minus(2, 1);
    19         
    20     }
    21 
    22 }

    和之前我们在服务端测试的效果是一样的,不同的是文件不一样。wsimport生成的文件将服务端的webservice折成若干文件了。每一个方法和请求分别对应2个文件。你会发现其中有个类CalculatorImpl:

    @WebServiceClient(name="CalculatorImplService", targetNamespace="http://annotation.ws.WebService.org/", wsdlLocation="http://localhost:9998/hw?wsdl")
    public class CalculatorImplService extends Service
    {

    这个类是注解好的客户端程序,它里面有个方法:

    @WebEndpoint(name="CalculatorImplPort")
    public ICalculator getCalculatorImplPort()
    {
    return ((ICalculator)super.getPort(new QName("http://annotation.ws.WebService.org/", "CalculatorImplPort"), ICalculator.class));
    }

    直接帮我们生成了一个qname访问程序。既然如何,我们就不用自己写qname了,直接拿来用测试岂不更好?

    简化后的客户端测试方法如下

    1. public class MyClient2 {  
    2.     public static void main(String[] args) {  
    3.         CalculatorImplService myServiceImplService=new CalculatorImplService();  
    4.         ICalculator msis= myServiceImplService.getCalculatorImplPort();  
    5.         msis.add(1, 4);  
    6.         msis.minus(1, 4);  
    7.     }  
    8. }  

    结果是一样的。

  • 相关阅读:
    定义结构体
    UML建模需求分析常用的UML图
    UML建模EA模型的组织
    优化Python脚本替换VC2005/2008工程x64配置
    C++插件框架已在 Mac OS X 下编译通过
    《iPhone开发快速入门》交流提纲
    X3插件框架发布v1.1.3
    从零开始创建一个插件
    Google论坛什么时候又可以使用的
    我的第一个Py脚本:批量替换VC工程中的x64条件定义配置
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/4886932.html
Copyright © 2020-2023  润新知