• WebService的简单应用


    WebService作为一种跨平台的技术,应用相当广泛,具体介绍请参照百度百科,这里不做详细介绍

    WebService--百度百科

    java版的实现

    服务端:

    定义接口,提供给远程调用者,接口上添加@WebService(),若对所有方法均对外可访问,则不需要添加@WebMethod,如果仅仅一部分方法客户端可调用,则在对应的方法上添加@WebMethod注解即可

    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    
    @WebService()
    public interface MyService {
        /**
         * WebResult通过webservice浏览器访问时结果输出控制,name为结果显示名称
         * WebParam对于参数输入时的显示名称
         */
        @WebResult(name="addResult")
        public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);
        
        @WebResult(name="minusResult")
        public int minus(@WebParam(name="aa")int a,@WebParam(name="ab")int b);
        
        @WebResult(name="checkUser")
        public User login(@WebParam(name="username")String username,@WebParam(name="password")String password);
    
    }

    服务端接口实现类

    import javax.jws.WebService;
    
    @WebService(endpointInterface="对应MyService全类名")
    public class MyServiceImpl implements MyService {
    
        @Override
        public int add(int a, int b) {
            System.out.println(a+" + "+b+" = "+(a+b));
            return a+b;
        }
    
        @Override
        public int minus(int a, int b) {
            System.out.println(a + " - " + b + " = " + (a-b));
            return a-b;
        }
    
        @Override
        public User login(String username, String password) {
            System.out.println(username + " " + password);
            User user = new User();
            user.setId(123);
            user.setUsername(username);
            user.setPassword(password);
            return user;
        }
    
    }

    User.java

    public class User {
        private int id;
        private String username;
        private String password;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }

     发布自己的webservice

    import javax.xml.ws.Endpoint;
    
    public class MyServer {
    
        public static void main(String[] args) {
            String address = "http://localhost:9999/ms";
            Endpoint.publish(address, new MyServiceImpl());
        }
    
    }

    此时运行后在浏览器输入http://localhost:9999/ms?wsdl就可看到对应的wsdl文档

    在eclipse的webservice 浏览窗口便可访问,注意,是wsdl模式

    客户端:

    import java.net.URL;
    
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;
    
    public class Test {
        public static void main(String[] args) {
            try {
                //创建访问wsdl服务地址的url
                URL url = new URL("http://localhost:9999/ms?wsdl");
                //通过Qname指明服务的具体信息
                QName sname = new QName("http://对应的服务端的包名,倒着写/", "MyServiceImplService");
                //创建服务
                Service service = Service.create(url,sname);
                //实现接口
                IMyService ms = service.getPort(IMyService.class);
                System.out.println(ms.add(12,33));
                //以上服务有问题,依然依赖于IMyServie接口
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    客户端也可利用jdk的工具生成,在资源管理器中src目录下输入wsimport -keep http://localhost:9999/ms?wsdl

    public class Client {
        
        public static void main(String[] args) {
            MyServiceImplService factory = new MyServiceImplService();
            IMyService service = factory.getMyServiceImplPort();
            System.out.println(service.add(123, 123));
        }
    }
  • 相关阅读:
    [AngularJS] Html ngSanitize, $sce
    [AngularJS] ngModelController render function
    [MODX] 3. Placeholder +
    [MODX] 2. Chunks $
    HTTP-Runoob:HTPP Content-Type
    HTTP-Runoob:HTTP状态码
    HTTP-Runoob:HTTP请求头信息
    HTTP-Runoob:HTTP请求方法
    HTTP-Runoob:HTPP消息结构
    HTTP-Runoob:HTTP简介
  • 原文地址:https://www.cnblogs.com/zqq1234/p/5257382.html
Copyright © 2020-2023  润新知