• eclipse下开发简单的Web Service


    service部分

    在eclipse下新建一个动态web项目

    在项目中新建一个service类

    编写SayHello类的代码

    package org.sunny.service;
    
    //包不要引用错了
    import javax.jws.WebService;
    import javax.xml.ws.Endpoint;
    
    //注解@WebService不能少
    @WebService
    public class SayHello {
        
        //该方法为客户端调用的方法,方法名任意
        public String say(String name){
            return "Hello " + name + " , this is SayHelloService !" ;
        }
    
        public static void main(String[] args) {
            //第一个参数是访问时的url,9091是任意一个不占用的端口
            Endpoint.publish("http://localhost:9091/Service/SayHello", new SayHello());
            System.out.println("service success !");
        }
    }

    进行测试:对任意空白处右键

    或者

    运行后将会调用类中的main方法

    运行结果出现如下配置则表示发布成功

    访问网页:http://localhost:9091/Service/SayHello?wsdl

    注意:‘?wsdl’是必须要添加的。

    出现如下页面表示发布成功

    client部分

    新建客户端类

    当然,你也可以新建一个web项目来编写客户端代码,本次client可service放在同一个项目下

    打开命令行:win+R打开运行,输入cmd

    输入以下命令

      wsimport -s E:SunnyWenDataJava_webWebServiceDemosrc -p org.sunny.client.config -keep http://localhost:9091/Service/SayHello?wsdl

      -s 后面的是你项目src所在的路径

      -p 后面的是你通过该命令生成的类所在的包

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

      -verbose表示详细信息。

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

    在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,用这些类文件,就可以像调用本地的类一样调用WebService提供的方法。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。

    其他命令参数请参照:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html

    对client类进行代码编写

    package org.sunny.client;
    
    import java.net.URL;
    
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;
    //包别导错了
    import javax.xml.ws.WebServiceClient;
    
    //导入两个命令生成的类
    import org.sunny.client.config.SayHello;
    import org.sunny.client.config.SayHelloService;
    
    //注解@WebServiceClient需要加入
    @WebServiceClient
    public class ClientToSay {
    
        public static void main(String[] args) {
    
            // 方法一
            /*try {
                // 服务WSDL Document的地址
    
                URL url = new URL("http://localhost:9091/Service/SayHello?wsdl");
                // 1.Qnameqname是qualified name 的简写
                // 2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成
                // 由package-info.java文件可知namespace为http://service.sunny.org/,
                QName qname = new QName("http://service.sunny.org/", "SayHelloService");
                Service service = Service.create(url, qname);
                SayHello sayHello = service.getPort(SayHello.class);
                String result = sayHello.say("Sunny01");
                System.out.println(result);
            } catch (Exception e) {
                e.printStackTrace();
            }*/
    
            // 方法二
             //通过SayHelloService的getSayHelloPort()方法的奥SayHello接口
             SayHello sayHello = new SayHelloService().getSayHelloPort();
             //调用SayHello接口的say方法
             String result = sayHello.say("Sunny02");
             //输出返回内容
             System.out.println(result);
        }
    
    }

    运行为java application程序,输出结果

  • 相关阅读:
    【BZOJ-4289】Tax 最短路 + 技巧建图
    【BZOJ-3895】取石子 记忆化搜索 + 博弈
    【BZOJ-4569】萌萌哒 ST表 + 并查集
    【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)
    【BZOJ-4213】贪吃蛇 有上下界的费用流
    【BZOJ-3122】随机数生成器 BSGS
    【BZOJ-2299】向量 裴蜀定理 + 最大公约数
    【BZOJ-1441】Min 裴蜀定理 + 最大公约数
    【BZOJ-2438】杀人游戏 Tarjan + 缩点 + 概率
    【BZOJ-4310】跳蚤 后缀数组 + ST表 + 二分
  • 原文地址:https://www.cnblogs.com/FlyingPuPu/p/5335138.html
Copyright © 2020-2023  润新知