zoukankan      html  css  js  c++  java
  • Javax ws 01

    1 EndPoint发布服务

    package com.gosaint.provider;
    
    import javax.jws.WebService;
    
    /**
     * @Authgor: gosaint
     * @Description:
     * @Date Created in 10:24 2018/1/8
     * @Modified By:
     */
    @WebService
    public interface Calculator {
        
        public int add(int a, int b);
        
        public int multi(int a, int b);
    }

    @WebService注解声明了该接口是一个webService接口。然后我们来写该接口的实现类

    package com.gosaint.provider;
    
    import javax.jws.WebService;
    
    /**
     * @Authgor: gosaint
     * @Description:
     * @Date Created in 10:25 2018/1/8
     * @Modified By:
     */
    @WebService(endpointInterface = "com.gosaint.provider.Calculator")
    public class CalculatorImpl implements Calculator {
        @Override
        public int add(int a, int b) {
            return a+b;
        }
    
        @Override
        public int multi(int a, int b) {
            return a*b;
        }
        public int minus(int a, int b) {
            return a - b;
        }
    }

    在该类中,实现了接口Calculator.覆盖其中的方法,并且我们自定义mins()方法,@WebService(endpointInterface="com.gosaint.Calculator")该主注解的作用也是声明该类是一个WebService接口。而且该服务的接口是Calcluator接口。后面的是该接口的全限定名称。

    此时我们就可以发布服务了。

    package com.gosaint.provider;
    
    import javax.xml.ws.Endpoint;
    
    /**
     * @Authgor: gosaint
     * @Description:
     * @Date Created in 10:27 2018/1/8
     * @Modified By:
     */
    // 服务发布
    public class Server {
        public static void main(String[] args) {
            Endpoint.publish("http://localhost:8088/calculator", new CalculatorImpl());
        }
    }

    publish()方法中的第一个参数就是发布服务的地址,后面一个参数就是服务的实现类。当服务发布成功后就可以去浏览器中进行访问:http://localhost:8088/calculator?wsdl

    当出现下面所示的类似的内容时则证明服务发布成功了。

    2 客户端的调用

    package com.gosaint.provider;
    
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;
    import java.net.URL;
    
    
    /**
     * @Authgor: gosaint
     * @Description:
     * @Date Created in 10:31 2018/1/8
     * @Modified By:
     */
    public class Client {
        public static void main(String[] args) throws Exception{
            // nameSpace这里需要包名倒写
            QName qName=new QName("http://provider.gosaint.com/",
                    "CalculatorImplService");
            URL url = new URL("http://localhost:8088/calculator?wsdl");
            Service service=Service.create(url,qName);
            Calculator port = service.getPort(Calculator.class);
            System.out.println(port.add(3,9));
        }
    }

    在这里客户端就可以直接对该接口实现调用了。QName对象中,要注意两个参数的名称。第一个参数应该是http://接口的包名倒写。第二个参数是服务的名称。这个可以在发布服务时生成的xml文件中获取。

    之后是创建服务,获取接口,调用方法。

    <service name="CalculatorImplService">
        <port name="CalculatorImplPort" binding="tns:CalculatorImplPortBinding">
            <soap:address location="http://localhost:8088/calculator"/>
        </port>
    </service>

    测试结果:12

    3 客户端代码的生成(利用Java自身的wsdl工具)

    只需要打开CMD输入如下的命令就能生成对应的文件,我在这里直接生成在桌面上,具体生成在指定的文件下或者包下的参数大家可以去自行百度。

    wsimport -keep http://localhost:8088/calculator?wsdl

    此时就可以直接调用这里面的一些类或者方法了。

    当上帝未揭开人类的未来图景之前,人类最伟大的智慧存在于两个词中,“等待”和“希望”
  • 相关阅读:
    MongoDB for OPS 02:复制集 RS 配置
    MongoDB for OPS 01:服务介绍与基本使用
    Redis for OPS 07:Redis 补充说明
    Redis for OPS 06:Redis Cluster 集群
    google ctemplate——c++模板引擎
    libctemplate——源码分析
    使用gulp对js、css、img进行合并压缩
    Windows平台交叉编译Arm Linux平台的QT5.7库
    使用gtest对DLL工程进行单元测试的实践
    websocket++简单使用例子
  • 原文地址:https://www.cnblogs.com/gosaint/p/8242110.html
Copyright © 2011-2022 走看看